二话不说,直接上图
(Channel少了一个a)

BossGroup维护Selector,只关心Accept事件
当接受到Accept事件时,获取到对应的SocketChannel,封装成NioSocketChannel并注册到worker线程,并进行维护
当Worker发现有可以处理的事件,就开始处理。
刚刚这张图过于简单,netty比较复杂,画一张比较复杂的图。


Netty抽象出两组线程池,BossGroup专门负责连接,WorkerGroup专门负责网络的读写。
BossGroup和WorkerGroup类型都是NioEventGroup
NioEventLoop相当于一个事件循环组,这个组中每个循环的事件时NioEventLoop
NioEventLoop表示一个不断循环的执行任务的线程,每个NioEventLoop都有一个Selector,用于监听绑定在其上的Socket上的网络通信
NioEventGroup可以包含多个NioEventLoop
BossGroup执行步骤:
1.轮询accept事件
2.处理accept事件,与client建立连接,生成NioSocketChannel,并将其注册到其中一个WorkerGroup上的NioEventLoop的selector
3.处理任务队列里的任务
WorkerGroup执行步骤:
1.轮询read/write事件
2.在NioSocketChannel中处理Io事件
3.处理任务队列中的任务
每一个Worker NioEventLoop处理业务时,会调用管道,管道和channel是双向可以获取的。