EventLoopGroup 的实例化
首先,我們先縱覽一下EventLoopGroup 的類結構圖,如下圖所示:
在前面的章節中我們已經簡單地介紹了一下NioEventLoopGroup 初始化的基本過程,這里我們再回顧一下時序圖:
基本步驟如下:
1、EventLoopGroup(其實是MultithreadEventExecutorGroup)內部維護一個類為EventExecutor children 數組,其大小是nThreads,這樣就初始化了一個線程池。
2、如果我們在實例化NioEventLoopGroup 時,如果指定線程池大小,則nThreads 就是指定的值,否則是CPU核數* 2。
3、在MultithreadEventExecutorGroup 中會調用newChild()抽象方法來初始化children 數組.
4、抽象方法newChild()實際是在NioEventLoopGroup 中實現的,由它返回一個NioEventLoop 實例。
5、初始化NioEventLoop 主要屬性:
provider:在NioEventLoopGroup 構造器中通過SelectorProvider 的provider()方法獲取SelectorProvider。
selector:在NioEventLoop 構造器中調用selector = provider.openSelector()方法獲取Selector 對象。
?
總結
以上是生活随笔為你收集整理的EventLoopGroup 的实例化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EventLoopGroup 与Reac
- 下一篇: 任务执行者EventLoop