提问者:小点点

在JavaNIO中,选择器对客户端SocketChannel有用吗?


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

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


共2个答案

匿名用户

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

匿名用户

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