netty-4.0 源码(NioEventLoopGroup分析)

NioEventLoopGroup 是一个处理nio事件的线程池, 最终会继承java的ScheduledExecutorService接口,而实现任务的简单timer,对于NioEventLoopGroup类最大的特色是重载了父类(MultithreadEventExecutorGroup)的 newChild 方法,在 newChild 里面实现了使用NIO 事件的工做线程的协议,初始化完:Selector.java

最终的流程:new NioEventLoopGroup(x)->MultithreadEventExecutorGroup()->NioEventLoopGroup:newChild->NioEventLoop()->NioEventLoop:openSelector()初始化 Selector,监听 NioEventLoop 的selector 监听事件的完成数据结构

对于初始化Selector netty 在openSelector() 有个优化点:netty会根据io.netty.noKeySetOptimization 的值,判断是否使用netty自己对selector的sun.nio.ch.SelectorImpl 的数据结构的优化.oop

总结:NioEventLoopGroup 不作实际的时间,仅仅是个处理多个NioEventLoop的池子,NioEventLoop 才是真实干活的nio的实现类.能够参看下面的类图:优化

相关文章
相关标签/搜索