Java NIO Selector 的使用
之前的文章已经把 Java 中 NIO 的 Buffer、Channel 讲解完了,不太了解的可以先回过头去看看。这篇文章我们就来聊聊 Selector —— 选择器。 首先 Selector 是用来干嘛的呢?不熟悉这个概念的话我们其实可以这么理解: 把它当作 SQL 中的 select 语句,在 SQL 中无非就是筛选出符合条件的结果集合。而 NIO 中的 Selector 用途类似,只不过它选择出来的是有就绪 IO 事件的 Channel。 IO 事件代表了 Channel 对于不同的 IO 操作所处的不同的状态,而不是对 Channel 进行 IO 操作。总共有 4 种 IO 事件的定义: OP_READ 可读 OP_WRITE 可写 OP_CONNECT 连接 OP_ACCEPT 接收 比如 OP_READ,其就绪是指数据已经在内核态 Ready 了并且已经从内核态复制到了用户态的缓冲区,然后我们的应用程序就可以去读取数据了,这叫可读。 再比如 OP_CONNECT,当某个 Channel 已经完成了握手连接,则 Channel 就会处于 OP_CONNECT 的状态。 对用户...






