線程組 NioEventLoopGroup


一、EventLoop和EventLoopGroup

EventLoop如同它的名字,它是一個無限循環(Loop),在循環中不斷處理接收到的事件(Event)。

Netty線程模型的基石是建立在EventLoop上的,從設計上來看,EventLoop采用了一種協同設計,它建立在兩個基本的API之上:Concurrent和Channel,也就是並發和網絡。並發是因為它采用了線程池來管理大量的任務,並且這些任務可以並發的執行。其繼承了EventExecutor接口,而EventExecutor就是一個事件的執行器。另外為了與Channel的事件進行交互,EventLoop繼承了EventLoopGroup接口。一個詳細的EventLoop類繼承層次結構如下:

二、NioEventLoopGroup

一個Netty服務端啟動時,通常會有兩個NioEventLoopGroup:一個是監聽線程組,主要是監聽客戶端請求,另一個是工作線程組,主要是處理與客戶端的數據通訊。

NioEventLoopGroup bossGroup = new NioEventLoopGroup();
NioEventLoopGroup workerGroup = new NioEventLoopGroup();

Netty客戶端只有一個NioEventLoopGroup,就是用來處理與服務端通信的線程組。

NioEventLoopGroup workerGroup = new NioEventLoopGroup();

NioEventLoopGroup可以理解為一個線程池,內部維護了一組線程,每個線程負責處理多個Channel上的事件,而一個Channel只對應於一個線程,這樣可以回避多線程下的數據同步問題。NioEventLoopGroup的類圖如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM