Java NIO 窗口实现

标签 java selector netty nio aio

在使用 NIO.2 AIO 功能开发项目时,我查看了“旧的”NIO 选择器实现,发现在 Windows 上使用了默认的选择功能,由于错误,它在 Windows 上根本无法缩放内部实现。每个人都知道在 Windows 上 IOCP 是唯一真正的解决方案。当然,完成时回调模型不适合 NIO 选择器模型,但这是否意味着在 Windows 上使用 NIO 基本上不是一个好主意?

例如:新的 AIO 功能包括 IOCP 实现。

在使用最新的 Netty 框架时尤其如此,其中对 AIO 的支持已被删除。那么 Netty 在 Windows 上的运行速度不如预期的快?

最佳答案

NIO.2 使用 IOCP

下面的调用树通过在几个被调用的类名中包含“Iocp”来演示文件 i/o,来自 Java 7: NIO.2 File Channels on the test bench .

另见 sun.nio.ch.Iocp.java ,“封装 I/O 完成端口的 AsynchronousChannelGroup 的 Windows 实现”。

NIO 不使用 IOCP,因为它只支持“非阻塞 i/o”(选择器),而不支持仅在 NIO.2 中添加的“异步 i/o”(完成处理程序)。

enter image description here

关于Java NIO 窗口实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23791024/

相关文章:

jQuery - 当单击列表中的按钮时切换()表单

java - 有没有支持java.nio.channels.SocketChannel的ssh客户端?

java - 我使用 Sockets 和 Netty 时遇到 "broken pipe"异常。怎么了?

performance - 在 32 核/10Gbit 主机上调优 Netty

java - 如何从 LatLng ArrayList 导出 GPX 文件

java - 生成给定大小的字符串

Javassist 与。 Java 编译器 API

java - 在 ImageJ 中将 8 位灰度 JPEG 图像转换为 32 位 TIFF 图像

multithreading - 使用performSelectorInBackground在单独的线程中处理代码时更新cocoa接口(interface)

java - 如何使用 Netty 读取 HTTP 请求的主体?