【发布时间】:2012-05-24 04:58:21
【问题描述】:
Java 中是否有类似 Linux epoll 的功能?
epoll 允许线程对多个异构事件做出反应。例如,我可以有一个线程对套接字事件或来自控制台的输入做出反应。在 C++ 中,我可以通过使用 epoll 注册 stdio 和套接字来实现这一点。我的线程将由来自任一事件的事件触发。
Java 中有类似的工具吗?我查看了 nio 包,它允许我使用选择器注册多个套接字。但是似乎没有办法用选择器注册控制台/标准 io。我没有看到什么吗?还有其他方法吗?
关于“为什么”:我想编写一个通过套接字进行通信的程序,并且我想通过从控制台输入命令来驱动这个程序。我知道如何通过分离控制台输入和与不同线程的通信来做到这一点,但我很好奇是否有办法在单个线程中做到这一点。
谢谢。 df
【问题讨论】:
-
你能退后一步,编辑你的帖子来解释为什么你想这样做吗?
-
我猜标准的“控制台输入”可能是
System.in(尽管您应该注入引用,而不是硬编码使用)。但是,它看起来不像生成事件(即 - 没有register()或类似方法),所以我认为没有你想要的默认行为。你必须写(或找到)一些东西来提供这种行为。
标签: java multithreading epoll