1. 程式人生 > >【Java.NIO】SelectionKey,***監聽的事件***

【Java.NIO】SelectionKey,***監聽的事件***

java.nio.channels
public abstract class SelectionKey extends Object

SelectionKey物件是用來跟蹤註冊事件的控制代碼。

在SelectionKey物件的有效期間,Selector會一直監控與SelectionKey物件相關的事件,如果事件發生,就會把SelectionKey物件加入到selected-keys集合中。

在以下情況下,SelectionKey物件會失效,這意味著Selector再也不會監控與它相關的事件:

  • 程式呼叫SelectionKey的cancel()方法
  • 關閉與SelectionKey關聯的Channel
  • 與SelectionKey關聯的Selector被關閉

***SelectionKey中定義的4中事件 ***

  • SelectionKey.OP_ACCEPT —— 接收連線繼續事件,表示伺服器監聽到了客戶連線,伺服器可以接收這個連線了
  • SelectionKey.OP_CONNECT —— 連線就緒事件,表示客戶與伺服器的連線已經建立成功
  • SelectionKey.OP_READ —— 讀就緒事件,表示通道中已經有了可讀的資料,可以執行讀操作了(通道目前有資料,可以進行讀操作了)
  • SelectionKey.OP_WRITE —— 寫就緒事件,表示已經可以向通道寫資料了(通道目前可以用於寫操作)