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的實現類.能夠參看下面的類圖:優化

相關文章
相關標籤/搜索