@Override public void close() throws IOException {
  if (mBufferCount > 0) {
    try {
      mQueue.write(mBuffer,0,mBufferCount);
    }
 catch (    InterruptedException e) {
      throw new IOException("GzipAsynchOutputStream interrupted during write/3");
    }
    mBufferCount=0;
  }
  mQueue.close();
  try {
    mThread.join();
  }
 catch (  InterruptedException e) {
    throw new IOException("AsynchOutputStream interrupted during close");
  }
 finally {
    super.close();
  }
  checkException();
}

@ Override public void close ( ) throws IOException { if ( mBufferCount > 0 ) { try { mQueue . write ( mBuffer , 0 , mBufferCount ) ; } catch ( InterruptedException e ) { throw new IOException ( "GzipAsynchOutputStream interrupted during write/3" ) ; } mBufferCount = 0 ; } mQueue . close ( ) ; try { mThread . join ( ) ; } catch ( InterruptedException e ) { throw new IOException ( "AsynchOutputStream interrupted during close" ) ; } finally { super . close ( ) ; } checkException ( ) ; }
this also io errors that happened in the gzip thread .
