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,其中维护了多种处理器