大傢好,我是小北。以前大傢都是用阻塞式IO來對網絡IO進行數據請求,對於不同的IO都要分配一個線程來處理,如果沒有數據就會進行等待,從而造成瞭阻塞,這種方式極大地浪費瞭資源(如圖1)。於是,有人就提出瞭一個想法,使用一個線程去監控多個IO請求,如果哪一個IO數據準備完畢後就通知相應的線程來處理,這就是selector模型(如圖2)。而Java中的selector就是對selector模型的一種實現,用於詢問選擇已就緒的IO處理任務。
OP_READ
:可讀事件。 OP_WRITE
:可寫事件。 OP_CONNECT
:客戶端連接服務端的事件,一般為創建SocketChannel
客戶端channel。 OP_ACCEPT
:服務端接收客戶端連接的事件,一般為創建ServerSocketChannel
服務端channel。1.創建選擇器
Selector selector = Selector.open();