【问题标题】:AsynchronousServerSocketChannel concurrent acceptingAsynchronousServerSocketChannel 并发接受
【发布时间】:2017-11-14 08:22:13
【问题描述】:

在官方doc的例子中,好像要一个接一个地接受连接。这让我很困惑,所以我看了sun.nio.ch.UnixAsynchronousServerSocketChannelImplsource code,在第 269 行有一条注释检查并设置标志以防止并发接受,那么有人可以告诉我为什么要阻止当前接受吗? 这是操作系统的限制还是目前不需要接受连接。提前谢谢。

【问题讨论】:

  • 我认为这是为了防止在收到连接请求时创建多个套接字实例或流。因此,它会导致并发接受问题。了解如何处理 NIO - 应该只有一个 Selector 线程来接受连接,但是您可能有多个线程来处理数据..

标签: java concurrency aio


【解决方案1】:

您将并发与异步混为一谈。当您通过异步 I/O 接受连接时,您应该立即安排另一个异步 accept()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 2012-10-02
    • 2022-12-17
    • 2021-08-10
    • 1970-01-01
    • 2019-09-18
    相关资源
    最近更新 更多