code: public void run(Socket socket) {
      synchronized (lock) {
        nextSocket = socket;
        lock.notify();
      }
      Thread.yield();
    }
docs: Instructs this NGSession to process the specified socket, after which this NGSession will
  return itself to the pool from which it came.
  
  @param socket the socket (connected to a client) to process