2015-09-07 173 views
0

我一直在研究Java NIO通信並閱讀關於此的各種文章。該文件說,我能「或」我是感興趣的歡聲笑語。不過,我還沒有看到Java nio SelectionKey.register和interestops

channel.register(selector,SelectionKey.OP_ACCEPT|SelectionKey.OP_READ|Selection.OP_WRITE) 

一個示例中,這是一個壞主意?

回答

1

是的。這是不對的。

  1. 能救你的OP_ACCEPT的唯一的事是ServerSocketChannel.
  2. ,可以提供你一個OP_READ或OP_WRITE是SocketChannel or a DatagramSocketChannel.
  3. 所以沒有辦法單通道可以提供你所有的唯一的事其中三起事件。所以沒有任何意義上的註冊。
  4. OP_WRITE幾乎總是準備好。很少有同時註冊OP_READ和OP_WRITE的意義。

validOps()方法告訴您哪些操作對於給定通道是有效的,而不是您在運行時需要知道的。