Netty中的Reactor线程主要干三件事情:
-
轮询注册在
Reactor上的所有Channel感兴趣的IO就绪事件。 -
处理
Channel上的IO就绪事件。 -
执行Netty中的异步任务。
正是这三个部分组成了Reactor的运行框架,那么我们现在来看下这个运行框架具体是怎么运转的~~
这里需要注意的是netty只会自动注册OP_READ事件,而OP_WRITE事件是在当Socket写入缓冲区以满无法继续写入发送数据时由用户自己注册。
这里假设一种极端情况,如果最近的一个定时任务的deadline是在未来很远的一个时间点,这样就会使timeoutMillis的时间非常非常久,那么Reactor岂不是会一直阻塞在Selector上造成 Netty 无法工作?
当Reactor正在Selector上阻塞时,如果此时用户线程向Reactor提交了异步任务,Reactor线程会通过execute方法被唤醒。
Reactor线程唤醒时机
Reactor运行核心逻辑:

Reactor线程运行时结构.png

Reactor工作流程图.png

Reactor分配任务执行时间.png
参考:一文聊透Netty核心引擎Reactor的运转架构













![[python] matplotlib.pyplot 绘制高宽不同、多行多列子视图](https://img-blog.csdnimg.cn/direct/16e7379df5974d108c47eebe1a5dc992.png)


![Erlang程序设计[Part1-Part2 chapter4]](https://img-blog.csdnimg.cn/direct/2603216fb88b4b808fa7766a56d4d5da.png)


