java - 选择器在内部是如何实现的?

标签 java nio

我刚刚开始探索 java NIO,非阻塞 IO。 我有兴趣了解实现背后的基础知识。 Java 选择器和物理套接字之间的通信是如何建立的?是否有操作系统级线程不断轮询底层资源?每个选择器是否有任何 java 线程不断轮询以接收这些事件?你们中有人可以指出我这一点吗?

最佳答案

不,select 的意义在于您不必在没有任何事情发生时浪费循环轮询。每个操作系统都以某种方式或其他方式(通常通过硬件中断)实现此功能,并通过 select() 系统调用将其提供给用户空间程序。与 Java 语言的联系是,如果您使用正确的 NIO 类和方法,JVM 现在包含将为您调用操作系统的 select 的代码。但这需要对 JVM 代码本身进行更改,这不是您可以在 NIO 之前纯粹在 Java 中完成的事情。

关于java - 选择器在内部是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7229277/

相关文章:

java - :dataTable problem - Target model Type is no a Collection or Array

java - 从 rdd 对象文件创建数据框

java - 如何将 InputStream 复制到 AsynchronousFileChannel

Java Nio Zip 文件

每个可选 channel 的 Java NIO 多个选择器

java - 观看目录时仅触发一次事件

java - 通过 JDBC 显示多列索引的列名

java - Eclipse:仅 "Run As > Run On Server"调用 web.xml

java - 如何使用 JNA 遍历窗口元素?

java - 并行读取文件时内存不足