一尘不染

Netty如何使用线程池?

java

您能解释一下Netty如何使用线程池工作吗?我是否正确理解,线程池有两种:老板线程和工人线程。老板用于执行I /
O,而worker用于调用用户回调(messageReceived)来处理数据?


阅读 418

收藏
2020-12-03

共1个答案

一尘不染

这是来自NioServerSocketChannelFactory文档

一个ServerSocketChannelFactory,它创建一个基于NIO的服务器端ServerSocketChannel。它利用NIO引入的非阻塞I
/ O模式来有效地服务许多并发连接。

线程如何工作
NioServerSocketChannelFactory中有两种类型的线程:一个是老板线程,另一个是工作线程。

老板线程

每个绑定的ServerSocketChannel都有自己的老板线程。例如,如果您打开了两个服务器端口(例如80和443),则将有两个老板线程。Boss线程接受传入的连接,直到未绑定端口。一旦成功接受了连接,老板线程就将接受的Channel传递给NioServerSocketChannelFactory管理的工作线程之一。

工作线程
一个NioServerSocketChannelFactory可以具有一个或多个工作线程。工作线程以非阻塞模式对一个或多个通道执行非阻塞读写。

在Nio模型中,bossThread照顾所有有界套接字(监听套接字),workerThread照顾Accepted-
socket(包括IO和调用messageMethod等接收事件的方法)。

2020-12-03