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