在Netty中,我如下创建渠道工厂。


  ChannelFactory工厂=
          新的NioServerSocketChannelFactory(
              Executors.newCachedThreadPool(threadFactory),
              Executors.newCachedThreadPool(threadFactory);


当出现新请求时,老板线程如何为工作线程池中的新请求分配空闲的工作线程?我可以在哪个网络课程中找到这种逻辑?

最佳答案

您可以在NioServerBoss.class中找到逻辑。以下是netty源代码的一部分。

   for (;;) {
      SocketChannel acceptedSocket = channel.socket.accept();
      if (acceptedSocket == null) {
          break;
      }
      registerAcceptedChannel(channel, acceptedSocket, thread);
   }


registerAcceptedChannel的一部分:

NioWorker worker = parent.workerPool.nextWorker();
worker.register(new NioAcceptedSocketChannel(
        parent.getFactory(), pipeline, parent, sink
        , acceptedSocket,
        worker, currentThread), null);


工作线程将检查其taskQueue并运行此新任务。

10-08 19:37