核心組件
- Channel
- Buffer
- Selector
channel
同一個網絡連接用同一個通道表示,IO操作都是從通道開始的,既可以從通道中讀取,也可以從通道中寫入。通道結合了輸入流和輸出流。
Buffer
通道的讀取就是把數據從通道讀取到緩衝區,反之爲寫入。
Selector
這裏回到IO多路複用,一個進程或者線程可以監視多個文件描述符,一旦其中的一個或者多個文件描述符可讀或者可寫,系統內核就會通知該進程或者線程。在Java中selector就是充當了這個監視器的作用,通過這個監視器,一個線程可以查詢多個通道的IO事件就緒狀態。
爲了實現IO多路複用,首先把通道註冊到選擇器中,一個選擇器只需要一個線程進行監控,我們可以很簡單的使用一個線程,通過選擇器去管理多個通道。
稍後繼續~~