在Java NIO中,是一个对客户端SocketChannel有用的选择器



在Java NIO中,ServerSocketChannel必须具有选择器的原因很容易理解。选择器可以从几个客户端通道中检查哪些通道已准备好进行I/O操作。

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

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

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

最新更新