在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并运行此新任务。