我有一个事件列表
List<Event> events;
每个事件都有一个动作和时间应该激活此动作。此列表已排序,但连续事件之间的时间间隔可能很大或很小。
我对使用while循环创建一个单独的线程感到困惑,但由于时间间隔可能很大,因此效率不高。一个改进可能是这样的:
检查第一个元素
如果日期正常
2.1流程事件
2.2从列表中删除事件
如果日期不合适
3.1计算diff = event_time - actual_time
3.2为困难时间睡觉
3.3转到1.
可以做得更好吗?_
我的问题是在给定时间内没有运行特定方法。应该按照与事件列表中相同的顺序处理这些事件。两个连续的事件可能会有相同的时间。
答案 0 :(得分:0)
使用java.util.concurrent.ScheduledThreadPoolExecutor
。
在延迟使用后安排任务:
schedule(Runnable command, long delay, TimeUnit unit)
这是JavaDoc:ScheduledThreadPoolExecutor
以下是一些示例:Examples