Netty框架实际上就是实现了多Reactor多线程模式
mainReactor ———— bossGroup(NioEventLoopGroup) 中的某个NioEventLoop
subReactor ———— workerGroup(NioEventLoopGroup) 中的某个NioEventLoop
acceptor ———— ServerBootstrapAcceptor
ThreadPool ———— 用户自定义线程池
netty的整个工作流程
(1)、服务器端有两个线程池,(事件循环组),bossGroup负责监听客户端连接,
wokerGroup负责监听网络读写。
(2)、每个线程池组里面都含有多个NioEventLoop(事件循环线程),
就是一个死循环,不停的监听。
(3)、每个NioEventLoop(事件循环线程)中有两个对象,
一个是selector,负责监听绑定在其上的socket的IO事件,
一个是taskQueue,负责来存放没来得及处理的IO事件。
(4)、bossGroup里面的NioEventLoop监听到了客户端连接事件,做以下三个操作:
<1>、轮询accpet事件(客户端连接事件)。
<2>、监听到了连接请求,就通过accpet(),生成一个nioSocketChannel
(连接通道),将其注册到workGroup里面的某个NioEventLoop的selector
<3>、继续处理任务队列。
(5)、workGroup里面的NioEventLoop监听到了连