【问题标题】:java Selector is asynchronous or non-blocking architecturejava Selector 是异步或非阻塞架构
【发布时间】:2013-07-11 00:24:55
【问题描述】:

对我来说,以下是异步和非阻塞 I/O 最可能的定义:

Asynchronous I/O: 在异步 I/O 应用程序中立即返回,操作系统会在字节可用于处理时通知它们。

NON-blocking I/O: 在这里应用程序立即返回可用的数据,应用程序应该有轮询机制来找出更多数据何时准备好。

知道了这些定义之后,如果我们分析java通道SocketChannelServerSocketChannelDatagramSocketChannel,那么我们可以通过configureBlocking(boolean block)方法发现这些通道可以作为阻塞或非阻塞模式使用。并假设我们将它们用作非阻塞模式。那么问题来了:

如果我将使用Selector 即将通道注册到selector,无论是异步 I/O 还是非阻塞 I/O

我觉得这是 java 中的异步 I/O,当且仅当底层操作系统通知 java 应用程序有关通道的就绪选择时。否则它是非阻塞 I/O,selector 只是一种机制,可以帮助我们轮询上述通道,正如我在定义中提到的那样。哪个是对的?提前致谢。

编辑:

我已经回答了问题的一部分,即 I/O 的类型以及 java 如何促进这些功能。

但是还有一个问题,是java提供的所有这些功能是在java层模拟还是使用底层操作系统来促进?假设底层操作系统支持这些功能。

请参考答案。

【问题讨论】:

    标签: java asynchronous io nio nonblocking


    【解决方案1】:

    如果我将使用选择器,即向选择器注册通道,无论是异步 I/O 还是非阻塞 I/O?

    通道正在执行非阻塞 I/O。选择器本身正在执行多路复用 I/O。 Java 中的异步 I/O 通过 Futures 完成,而在其他语言中则通过信号量或回调完成。

    但是仍然存在一个问题,这些功能是由 java 提供的,是在 java 层模拟还是使用底层 OS 来促进?假设底层操作系统具有对这些功能的所有支持。

    操作系统会这样做。应用程序不能,Java 有资格作为操作系统的应用程序。

    【讨论】:

      【解决方案2】:

      我想通过做更多的功课来回答我的问题。这篇文章还将有助于理解 w.r.t 的 I/O 概念。底层操作系统。

      • 这是阻塞 I/O:FileInputStreamFileOutputStream 甚至从 Socket 读取或写入都属于此类别

      • 这是非阻塞 I/O:这是由 Java 中的 ServerSocketchannelSocketChannelDatagramChannel 等套接字通道使用的

      • 这是多路复用 I/O:在 Java 中,Selector 使用它来处理多个通道,这些通道本质上应该是 non-blocking。所以 Socket 通道可以注册到SelectorSelector 可以通过底层操作系统的 I/O 多路复用设施进行管理。

      • 现在是异步 I/O。在异步 I/O 应用程序中,应用程序立即返回,操作系统将在字节可用于处理时通知它们。在 java 中,AsynchronousSocketChannelAsynchronousServerSocketChannelAsynchronousFileChannel 为它提供了便利。

      对于上述这些功能,java 大量使用底层操作系统。当我通过 book 时,这一点很明显。在第 4 章中,作者提到了这一点

      真正的就绪选择必须由操作系统完成。操作系统执行的最重要的功能之一是处理 I/O 请求并在数据准备好时通知进程。因此,只有将此功能委托给操作系统才有意义。 Selector 类提供了抽象,Java 代码可以通过该抽象以可移植的方式从底层操作系统请求就绪选择服务。

      因此很明显,Java 大量使用底层操作系统来实现这些功能。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-07
        • 2018-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-28
        • 1970-01-01
        • 2016-07-14
        相关资源
        最近更新 更多