Java计时器:取消所有错过的执行

时间:2015-06-04 11:56:10

标签: java timertask

我正在使用

scheduleAtFixedRate(TimerTask task, Date firstTime, long period) 

在我的程序中。如果已经过了开始时间,则执行在开始时间和当前时间之间遗漏的所有任务。正如文档所说:

由于上述原因,如果预定的第一次是在过去,那么任何“错过的”执行都将被安排立即“追赶”执行。

有没有办法阻止这些“追赶”处决?

1 个答案:

答案 0 :(得分:1)

我认为您可以做的最好的事情是使用schedule来电:

schedule(TimerTask task, long delay, long period)

并预先计算第一个任务开始所需的延迟。如果已经过了所需的开始时间,只需使用0的延迟。像这样:

long delay = startTime.getTime() - System.currentTimeMillis();
delay = delay < 0 ? 0 : delay;