我正在使用
scheduleAtFixedRate(TimerTask task, Date firstTime, long period)
在我的程序中。如果已经过了开始时间,则执行在开始时间和当前时间之间遗漏的所有任务。正如文档所说:
由于上述原因,如果预定的第一次是在过去,那么任何“错过的”执行都将被安排立即“追赶”执行。
有没有办法阻止这些“追赶”处决?
答案 0 :(得分:1)
我认为您可以做的最好的事情是使用schedule
来电:
schedule(TimerTask task, long delay, long period)
并预先计算第一个任务开始所需的延迟。如果已经过了所需的开始时间,只需使用0的延迟。像这样:
long delay = startTime.getTime() - System.currentTimeMillis();
delay = delay < 0 ? 0 : delay;