9

在 Java NIO 中,很容易理解为什么一个 ServerSocketChannel 必须有一个选择器。选择器可以从准备好进行 I/O 操作的多个客户端通道中进行检查。

但是,在我在网上阅读的一些评论中,选择器机制应用于客户端 SocketChannel。我不明白为什么选择器对客户有用。谁能解释为什么在只有一台服务器的通常情况下使用它?

4

2 回答 2

7

除非您连接到数百台服务器,否则很难在客户端中看到非阻塞 NIO 的意义。但是如果你使用的是非阻塞 NIO,你肯定必须使用 a Selector,否则你不知道什么时候读取通道,或者在不完整的写入后它何时再次变为可写。

于 2012-09-09T23:04:15.923 回答
6

选择器允许您使用单个线程跨多个通道提供并发通信服务。当您必须同时与多个服务器进行通信时,或者当您以客户端角色与对等计算机进行通信时(例如读取种子文件时),它在客户端上可能很有用。

于 2012-09-09T10:21:39.437 回答