本文我們將先從NioEventLoop開(kāi)始來(lái)學(xué)習(xí)服務(wù)端的處理流程。話不多說(shuō),開(kāi)始學(xué)習(xí)~~~~
我們從上文中已經(jīng)知道server在啟動(dòng)的時(shí)候會(huì)開(kāi)啟兩個(gè)線程:bossGroup和workerGroup,這兩個(gè)線程分別是boss線程池(用于接收client請(qǐng)求)和worker線程池(用于處理具體的讀寫(xiě)操作),這兩個(gè)線程調(diào)度器都是NioEventLoopGroup,bossGroup有一個(gè)NioEventLoop,而worker線程池有n*cup數(shù)量個(gè)NioEventLoop。那么我們看看在NioEventLoop中的是如何開(kāi)始的:
NioEventLoop本質(zhì)上是一個(gè)線程調(diào)度器(繼承自ScheduledExecutorService),當(dāng)bind之后就開(kāi)始run起一個(gè)線程:
(代碼一)
1 @Override 2 protected void