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!
推薦閱讀:
- Java NIO 中 Selector 解析
- Java非阻塞I/O模型之NIO相關知識總結
- 小白也可以學會的Java NIO的Write事件
- Java基於NIO實現聊天室功能
- Java NIO實戰之多人聊天室