Netty抽象出两组线程池BoosGroup负责接收客户端的连接,WorkGroup负责网络的读写。
BoosGroup
和WorkGroup
类型都是NioEventLoopGroup
,相当于一个事件循环组,组中含有多个事件循环,每个事件循环是NioEventGroup
。
NioEventLoop
表示一个不断循环的执行处理任务的线程,每个NioEventLoop
都有一个Selector
,用于监听绑定在其上的Socket
的网络通信。
NioEventLoopGroup
可以有多个线程,即可以含有多个NioEventLoop
。
- 每个
Boos NioEventLoop
执行
- 轮训accept事件
- 处理accept事件,与clinet建立连接,生成
NioSocketChannel
,并将其注册到某个Worker NioEventLoop
上的selector - 处理任务队列,即runAllTasks
- 每个
Worker NioEventLoop
执行
- 轮询read/write事件,即在对应的
NoiSocketChannel
处理I/O事件 - 处理任务队列,即runAllTasks
每个Worker NioEventLoop
处理业务是,会使用PipeLine
,其中维护了多种处理器