Java高并发教程:详解NIO Selector类
NIO Selector
Java NIO Selector可以检查一个或多个Java NIO Channel实例,并确定哪些通道可供使用,例如read或write。 这样, 单个线程可以管理多个通道,从而可以管理多个网络连接。Selector 选择器的使命是 完成IO的多路复用。一个通道代表一条连接通路, 通过选择器可以同时监控多个通道IO(输入输出)状况。选择器和通道的关系,是监控和被监控的关系。
如下图所示为一个Selector同时监控3个Channel:
选择器提供了独特的API方法,能够选出Select所监控的通道拥有哪些已经准备好的,就绪的IO操作事件。可供选择器监控的通道IO事件类型,包括以下:
- 可读:SelectionKey.OP_READ
- 可写:SelectionKey.OP_WRITE
- 连接:SelectionKey.OP_CONNECT
- 接收:SelectionKey.OP_ACCEPT
判断 一个通道能否被选择器监控或者选择,有一个前提:判断它是否继承了抽象类SelectableChannel。
注: IO事件指的是通道的某个IO操作的一种就绪状态。
参考资料
- https://www.baeldung.com/java-nio-selector
- http://tutorials.jenkov.com/java-nio/selectors.html
- 《基于Netty、Redis、Zookeeper高并发实战》
Original: https://www.cnblogs.com/MrSaver/p/13138452.html
Author: 子烁爱学习
Title: Java高并发教程:详解NIO Selector类
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/538104/
转载文章受原作者版权保护。转载请注明原作者出处!