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