Java高并发教程:详解NIO Selector类

Java高并发教程:详解NIO Selector类

NIO Selector

  Java NIO Selector可以检查一个或多个Java NIO Channel实例,并确定哪些通道可供使用,例如read或write。 这样,单个线程可以管理多个通道,从而可以管理多个网络连接。Selector 选择器的使命是完成IO的多路复用。一个通道代表一条连接通路,通过选择器可以同时监控多个通道IO(输入输出)状况。选择器和通道的关系,是监控和被监控的关系。

  如下图所示为一个Selector同时监控3个Channel:

  

   选择器提供了独特的API方法,能够选出Select所监控的通道拥有哪些已经准备好的,就绪的IO操作事件。可供选择器监控的通道IO事件类型,包括以下:

  1. 可读:SelectionKey.OP_READ
  2. 可写:SelectionKey.OP_WRITE
  3. 连接:SelectionKey.OP_CONNECT
  4. 接收:SelectionKey.OP_ACCEPT

  判断一个通道能否被选择器监控或者选择,有一个前提:判断它是否继承了抽象类SelectableChannel

注:IO事件指的是通道的某个IO操作的一种就绪状态

参考资料

原文地址:https://www.cnblogs.com/MrSaver/p/13138452.html