public final void cancel() { mLock.readLock().lock(); try { if (mClosed) { return; } } finally { mLock.readLock().unlock(); } mLock.writeLock().lock(); try { mClosed = true; } finally { mLock.writeLock().unlock(); } try { mSocket.close(); } catch (IOException e) { } }