java如果计时器落后于计划怎么办
我正在使用java.util.Timer
类。我用它来执行重复的任务。(例如,每秒检查一次状态的轮询机制)
timer.scheduleAtFixedRate(new Poller(), 0, pollingInterval);
问题是:计时器可能会落后。e、 g.如果他们需要每秒钟执行一次,并且任务需要2秒钟才能执行
文件上说,计时器将试图赶上。e、 g.突然之间,如果任务只需要半秒钟就可以执行,它会加速
首先,我想知道,是否有一种内置的方法来检测它是否落后于
但不管怎样,我正在寻找一种方法来禁用追赶行为。 如果它落后,我只想让它跳过几个周期
(我也使用了ScheduledThreadPoolExecutor
来完成类似的任务。它有更多的选项,也许这就是解决方案。但它太难找到了。)
编辑:
现在我想了想,我认为用ScheduledThreadPoolExecutor
来做这件事的方法是使用scheduleWithFixedDelay
方法,它使用任务执行之间的间隔
不过,有没有办法用Timer
实现同样的效果
# 1 楼答案
如果你不在乎计时器是否落后,为什么不使用一个简单的带线程的while循环呢。睡眠,例如:
如果由于操作系统的调度限制而落后,它将永远不会试图弥补损失的时间。它将始终至少延迟您指定的时间。记住,简单比复杂好