2015-12-14 82 views
4

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

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

+1

第二个对你所关联问题的回答似乎回答了这个问题:如果你使用的连接少于10,000个,问题可能在其他地方。如果不知道有关硬件的硬件以及使用资源的其他因素,则可能无法定义特定的最大值。 –

+0

@NathanielFord第二个回应实际上只是来源不明,现在因不利评论而被删除。这与被问到的问题也没有关系。 – EJP

回答

4

除套接字描述符的数目外,没有限制。一些平台有潜在的限制,但是NIO可以通过多个操作系统选择器在其周围工作,每个Selector.

对于Java 1.4.1有一个限制,但它早已消失。

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

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