选择器最多可以选择多少个通道?

AmR*_*RzA 5 java sockets nio

我想知道一个选择器最多可以处理多少个通道?我熟悉常见的 I/O 算法,但我不知道NIO是否可以使用选择器来处理(例如)10000 个套接字。是否应该使用多个线程并在每个线程中都有一个选择器来处理特定数量的套接字?

虽然我发现了这个,但它没有解决这个具体问题。

use*_*421 5

除了套接字描述符的数量之外没有任何限制。一些平台有潜在的限制,但 NIO 通过每个平台有多个操作系统选择器来解决这些限制Selector.

Java 1.4.1 之前有一个限制,但它早已消失了。

是否应该使用多个线程并在每个线程中都有一个选择器来处理特定数量的套接字?

这是可能的,但我真的不明白为什么你应该这样做。也许同行可能会通过这种方式获得更常规的服务,这取决于您的代码与每个请求的关系。