引言
在 Netty 的引導程式中,啟動一個服務端應用是一個十分簡單的事情。配置連結類對象,配置子類初始化
ChannelHandler
,再調用
bind
方法綁定端口号,一個服務端應用就啟動完畢了,接着隻需要等待用戶端發送連接配接請求,程式就能自動為我們完成用戶端接入。看着是很簡單的過程,Netty 在背後卻是做了相當多的工作,本文就以
ServerBootStrap
啟動的時序動作為分析入手點,剖析在引導程式啟動中,涉及到的具體代碼内容。
總體時序流程
使用
ServerBootStrap
的
bind
方法執行對端口的監聽,這裡面涉及到好幾個步驟,簡單而言包括有:
- 按照給定的
類,執行個體化一個對象。Channel
- 将執行個體化的
對象注冊到Channel
上。EventLoop
- 設定
的綁定監聽位址,并且更新Channel
對象的Channel
的事件關注集。SelectionKey
整體的時序如下
可以看到,一個完整的初始化動作内容很多,并且很多都是委托給其他類完成,下面按照三個大步驟進行區分,來逐一分析。
初始化 Channel 對象
ServerBootStrap
使用