【问题标题】:What is the maximum number of channels that a selector can select?选择器可以选择的最大通道数是多少?
【发布时间】:2015-12-14 18:59:29
【问题描述】:

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

虽然我找到了this,但它并没有解决这个具体问题。

【问题讨论】:

  • 对您链接的问题的第二个回答似乎回答了这个问题:如果您使用的连接数少于 10,000,则问题可能出在其他地方。如果不充分了解它所在的硬件以及使用资源的其他因素,则可能无法定义特定的最大值。
  • @NathanielFord 第二个回复实际上只是无来源的谣言,现在由于负面评论已被删除。它也与所提出的问题无关。

标签: java sockets nio


【解决方案1】:

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

在 Java 1.4.1 之前有一个限制,但早已不复存在。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-02
    • 2011-05-13
    • 2019-08-09
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2014-07-03
    相关资源
    最近更新 更多