Java nio SelectionKey.register 和 interestops
Java nio SelectionKey.register and interestops
我一直致力于 Java NIO 通信并阅读了与此相关的各种文章。该文件说我可以 "or" 我感兴趣的操作。但是,我还没有看到一个
的例子
channel.register(selector,SelectionKey.OP_ACCEPT|SelectionKey.OP_READ|Selection.OP_WRITE)
这是个坏主意吗?
是的。错了。
- 唯一能让你获得 OP_ACCEPT 的是
ServerSocketChannel.
- 唯一能让您获得 OP_READ 或 OP_WRITE 的是
SocketChannel or a DatagramSocketChannel.
- 因此,单个频道无法为您提供所有这三个事件。所以全部注册是没有意义的。
- OP_WRITE 几乎随时准备就绪。同时注册 OP_READ 和 OP_WRITE 几乎没有意义。
validOps()
方法告诉您哪些操作对给定通道有效,而不是您应该在运行时知道。
我一直致力于 Java NIO 通信并阅读了与此相关的各种文章。该文件说我可以 "or" 我感兴趣的操作。但是,我还没有看到一个
的例子channel.register(selector,SelectionKey.OP_ACCEPT|SelectionKey.OP_READ|Selection.OP_WRITE)
这是个坏主意吗?
是的。错了。
- 唯一能让你获得 OP_ACCEPT 的是
ServerSocketChannel.
- 唯一能让您获得 OP_READ 或 OP_WRITE 的是
SocketChannel or a DatagramSocketChannel.
- 因此,单个频道无法为您提供所有这三个事件。所以全部注册是没有意义的。
- OP_WRITE 几乎随时准备就绪。同时注册 OP_READ 和 OP_WRITE 几乎没有意义。
validOps()
方法告诉您哪些操作对给定通道有效,而不是您应该在运行时知道。