code: @Override
  	public void close() throws IOException {
  		try {
  			if (this.logicallyClosed.compareAndSet(false, true) && available) {
  
  				// 中断连接监视线程
  				if (this.threadWatch != null) {
  					this.threadWatch.interrupt();
  					this.threadWatch = null;
  				}
  
  				ThriftConnectionHandle<T> handle = null;
  				try {
  					handle = this.recreateConnectionHandle();
  					this.thriftConnectionPool.connectionStrategy.cleanupConnection(this, handle);
  					this.thriftConnectionPool.releaseConnection(handle);
  				} catch (ThriftConnectionPoolException e) {
  					possiblyBroken = true;
  					// 检查连接是否关闭了
  					if (!isClosed()) {
  						this.thriftConnectionPool.connectionStrategy.cleanupConnection(this, handle);
  						this.thriftConnectionPool.releaseConnection(this);
  					}
  					throw new IOException(e);
  				}
  			} else {
  				this.thriftConnectionPool.postDestroyConnection(this);
  			}
  		} catch (Exception e) {
  			possiblyBroken = true;
  			throw new IOException(e);
  		}
  		if (thriftConnection != null) {
  			thriftConnection.close();
  		}
  	}
docs: /*
  @see java.io.Closeable#close()