java SelectableChannel的使實例用法講解

1、說明

(1)SelectableChannel 是一個抽象類,它實現瞭 Channel 接口,這個類比較特殊。

(2)SelectableChannel 可以被 Selector 用來多路復用,不過首先需要調用 selectableChannel.configureBlocking(false) 調整為非阻塞模式。

2、實例

SelectionKey register(Selector sel, int ops)
SelectionKey register(Selector sel, int ops, Object att)
  • 第一個參數代表要註冊的 Selector 實例。
  • 第二個參數代表本通道感興趣的操作,這些都定義在 SelectionKey 類中。
  • 第三個參數 Object att 是註冊時的附件,也就是可以在註冊的時候帶點什麼東西過去。

知識點擴展:

定義自己的SelectableChannel

我的理解是java實現基於unix select()c函數(我似乎記得 Windows實現略有不同)

根據操作系統(和JVM args!),調用不同的本機OS函數,但它們的共同點是它的本機代碼 – 基本功能不是用Java實現的.

如果你想創建一個訪問底層操作系統的select()(或類似)的lib(它確實依賴於文件句柄),我認為你幾乎被迫使用JNI.我不相信有任何方法可以解決它.

Java中的Selector / SelectableChannel實際上是select()可以做的貧血子集.

到此這篇關於java SelectableChannel的使實例用法講解的文章就介紹到這瞭,更多相關java SelectableChannel的使用內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: