对Java事件循环库的建议
我正在寻找类似JavaScript对Java事件循环库的建议,java,event-loop,Java,Event Loop,我正在寻找类似JavaScriptsetTimeout,但带有Runnable,具有以下限制: 每次超时不需要单独的专用线程 已经发展和深思熟虑 甚至可能包括其他功能。(取消超时?、等待某事?、异步I/O?) 不需要任何GUI库。(Java FX/Swing/AWT都内置了事件循环) 你有什么建议吗 编辑:我找到了我要找的东西。如果有一个库也包含了与非阻塞或异步I/O相关的内容,那将是一个加号。您想过使用的API吗 可能对您有用。您可能正在寻找: 您可以决定使用多少线程 标准JDK类 可取
setTimeout
,但带有Runnable
,具有以下限制:
- 每次超时不需要单独的专用线程
- 已经发展和深思熟虑
- 甚至可能包括其他功能。(取消超时?、等待某事?、异步I/O?)
- 不需要任何GUI库。(Java FX/Swing/AWT都内置了事件循环)
编辑:我找到了我要找的东西。如果有一个库也包含了与非阻塞或异步I/O相关的内容,那将是一个加号。您想过使用的API吗
可能对您有用。您可能正在寻找:
- 您可以决定使用多少线程
- 标准JDK类
- 可取消的任务
- 与任何GUI无关
我真的不理解计划的可运行程序和事件循环之间的联系,但也许您会发现这个类中的内容 您可以使用java.util.Timer http://docs.oracle.com/javase/6/docs/api/java/util/TimerTask.html 您可以将任务设置为仅运行一次或定期运行。
您还可以停止/取消单个TimerTask或所有任务。如果您正在Java中寻找一个简单的node.js样式的事件循环,这是一个很好的开始 看看javadoc中提到的工厂,尤其是。这为您提供了一个可以向其提交任务的单一后台线程(如节点事件循环:请参见答案)
对于异步IO,处理阻塞活动的任务需要拆分一个线程(或执行器),并使用a将结果提交回事件循环。我认为Vert.x是您所需要的,它是事件驱动的且非阻塞的。我认为它被称为“XNIO”或“Mina”。更基于异步IO,不像Twisted/POE(?)那样通用,但在其他方面需要什么。(我想知道Twisted/POE是否有Java替代品?)。同样有趣的是,没有直接关系:可能会有一个线程等待计划时间的到来,一个事件循环会这样做,等等。这说明了吗?它太老了,无法回答,这个项目是在Netflix的掩护下建立的。使用可观察序列编写异步和基于事件的程序的库。
tpe.awaitTermination(50, TimeUnit.SECONDS);