Netty的线程模型帮助我们简单编写出适应并发环境的代码,简洁且写起来跟在单线程应用无异,需关心背后的同步问题,这一切都交由了Netty去实现与管理。
Netty是一个基于事件模型的框架,当有事件触发,都会进行事件循环中,再进行下一步处理。Netty中的EventLoop接口代表了事件循环,他扩展自EventExecutor,而EventExecutor又扩自java.util.concruurent.ScheduledExecutorService。这意味都他能拥有ScheduledExecutorService相关操作。
关系图:
Netty设计使用了后台线程来执行I/O事件,他们触发来自Socket的read跟write操作。若当前inbound或outbound操作在当前EventLoop执行线程中,则直接执行,否则加入到任务队列中排队,待EventLoop读取后执行。
EventLoop的负责在Channel的生命周期中处理各种事件执行。
EventLoop中对于执行线程与Channel的分配:
线程池中每一条线程处理少量的Channel,并不是一条线程对应着一个Channel这种方式。