Netty執行緒模型之客戶端執行緒模型
阿新 • • 發佈:2019-01-26
相比於服務端,客戶端的執行緒模型簡單一些,它的工作原理如下:
第一步:由使用者執行緒發起客戶端連線,示例程式碼如下:
客戶端只需要建立一個EventLoopGroup,因為它不需要獨立的執行緒去監聽客戶端連線,也沒有必要通過一個單獨的客戶端執行緒去連線服務端。Netty執行緒是非同步事件驅動的NIO框架,它的連線和所有IO操作都是非同步的,因此不需要建立單獨的連線執行緒。相關程式碼如下:
當前的group()就是之前傳入的EventGroup,從中獲取可用的IO執行緒EventLoop,然後作為引數設定到新建立的NioSocketChannel中。
第二步:發起連線操作,判斷結果,程式碼如下:
判斷連線結果,如果沒有連線成功,則監聽連線網路操作位
第三步:由NioEventLoop的多路複用器輪詢連線操作結果,程式碼如下:
----判斷連線操作結果
---設定操作位為READ
第四步:由NioEventLoop執行緒負責IO讀寫,同步服務端。
總結:客戶端建立,執行緒模型如下:
1.由使用者執行緒負責初始化客戶端資源,發起連線操作;
2.如果連線成功,將SocketChannel註冊到IO執行緒組的NioEventLoop執行緒中,監聽讀操作位;
3.如果沒有立即連線成功,將SocketChannel
4.連線成功後,修改監聽位位READ,但是不需要切換執行緒。