public void close(){
synchronized (asyncCloseExecutors) {
    if (!this.closed) {
      this.closed=true;
      for (      ThreadPoolExecutor pool : asyncCloseExecutors.values()) {
        pool.shutdown();
      }
      asyncCloseExecutors.clear();
    }
  }
}

public void close ( ) { synchronized ( asyncCloseExecutors ) { if ( ! this . closed ) { this . closed = true ; for ( ThreadPoolExecutor pool : asyncCloseExecutors . values ( ) ) { pool . shutdown ( ) ; } asyncCloseExecutors . clear ( ) ; } } }
call close when you are all done with your socket closer . if you call asyncclose after close is called then the asyncclose will be done synchronously .
