當前位置:編程學習大全網 - 源碼下載 - Selector選擇器

Selector選擇器

Selector 壹般稱 為 選擇器 ,也可以翻譯為 多路復用器 。它是Java NIO核心組件中的壹個,用於檢查壹個或多個NIO Channel(通道)的狀態是否處於可讀、可寫。如此可以實現單線程管理多個channels,也就是可以管理多個網絡鏈接

學習Selector之前,需要先了解阻塞IO和非阻塞IO的區別。以燒水為例,出場人物:老王,普通水壺和響水壺。

通過以上故事,我們得到了同步和異步,阻塞和非阻塞幾個概念:

IO 包中的類是典型的阻塞設計,這無法發揮的性能,就需要使用多線程來解決阻塞問題

在 NIO 中,Selector的作用就是用來輪詢每個註冊的Channel,壹旦發現Channel有註冊的事件發生,便獲取事件然後進行處理 。

示例

Channel 必須是非阻塞的 所以 FileChannel 不適用 Selector,因為 FileChannel 不能切換為非阻塞模式,更準確的來說是因為 FileChannel沒有繼承SelectableChannel。Socket channel可以正常使用。

SelectionKey 可以稱為 interest集合 。 意思是在 通過Selector監聽Channel時對什麽事件感興趣 。通道觸發了壹個事件意思是該事件已經就緒。

如果需要不止壹種事件,使用或運算符即可,如下:

壹個SelectionKey鍵表示了壹個特定的通道對象和壹個特定的選擇器對象之間的註冊關系

  • 上一篇:貍貓畫源代碼
  • 下一篇:Dj+asp。源代碼
  • copyright 2024編程學習大全網