我刚刚开始探索 java NIO,非阻塞 IO。 我有兴趣了解实现背后的基础知识。 Java 选择器和物理套接字之间的通信是如何建立的?是否有操作系统级线程不断轮询底层资源?每个选择器是否有任何 java 线程不断轮询以接收这些事件?你们中有人可以指出我这一点吗?
最佳答案
不,select
的意义在于您不必在没有任何事情发生时浪费循环轮询。每个操作系统都以某种方式或其他方式(通常通过硬件中断)实现此功能,并通过 select()
系统调用将其提供给用户空间程序。与 Java 语言的联系是,如果您使用正确的 NIO 类和方法,JVM 现在包含将为您调用操作系统的 select
的代码。但这需要对 JVM 代码本身进行更改,这不是您可以在 NIO 之前纯粹在 Java 中完成的事情。
关于java - 选择器在内部是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7229277/