Java netty如何将工作线程分配给新请求?
在netty中,我创建了一个通道工厂,如下所示 渠道工厂= 新NioServerSocketChannelFactory( Executors.newCachedThreadPool(threadFactory), Executors.newCachedThreadPool(threadFactory) 当新请求出现时,boss线程如何从workerthread池中为新请求分配空闲工作线程?在哪个netty类中可以找到此逻辑?请参见此处 凸台螺纹 每个绑定的ServerSocketChannel都有自己的boss线程 boss线程接受传入连接,直到端口解除绑定。 一旦成功接受连接, boss线程将接受的通道传递给NioServerSocketChannelFactory管理的工作线程之一 从 现在有些事情会有所改善 参见此处 凸台螺纹 每个绑定的ServerSocketChannel都有自己的boss线程 boss线程接受传入连接,直到端口解除绑定。 一旦成功接受连接, boss线程将接受的通道传递给NioServerSocketChannelFactory管理的工作线程之一 从 现在有些事情会有所改善Java netty如何将工作线程分配给新请求?,java,netty,nio,worker,Java,Netty,Nio,Worker,在netty中,我创建了一个通道工厂,如下所示 渠道工厂= 新NioServerSocketChannelFactory( Executors.newCachedThreadPool(threadFactory), Executors.newCachedThreadPool(threadFactory) 当新请求出现时,boss线程如何从workerthread池中为新请求分配空闲工作线程?在哪个netty类中可以找到此逻辑?请参见此处 凸台螺纹 每个绑定的ServerSocketChannel
您可以在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);
工作线程将检查其任务队列并运行此新任务。您可以在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并运行此新任务