.
在 Java NIO 编程实践中,很多人都会选择 Netty 作为基础框架,而不是直接用 JDK 原生的 NIO API。
因为 JDK 原生的 NIO 框架内容过于繁杂、学习成本高、补齐可靠性的工作量和难度都很大、还有一些bug。
其中一个著名的bug就是 epoll Selector 空转问题。
相关Bug单
-
《JDK-6670302 : (se) NIO selector wakes up with 0 selected keys infinitely [lnx 2.4]》
-
《JDK-6403933 : (se) Selector doesn't block on Selector.select(timeout) (lnx)》
-
《JDK-2147719 : (se) Selector doesn't block on Selector.select(timeout) (lnx)》
问题表象
示例代码(仅做示例,未考虑异常处理):
Java代码