Java计时器:取消所有错过的执行
我正在使用Java计时器:取消所有错过的执行,java,timertask,Java,Timertask,我正在使用 scheduleAtFixedRate(TimerTask task, Date firstTime, long period) 在我的节目里。如果开始时间已过,则会执行在开始时间和当前时间之间错过的所有任务。正如文件所说: 由于上述原因,如果计划的第一次是在过去,那么任何“错过”的执行将被安排为立即“追赶”执行 有什么方法可以阻止这些“赶超”执行吗?我认为最好的方法是使用调度调用: schedule(TimerTask task, long delay, long period
scheduleAtFixedRate(TimerTask task, Date firstTime, long period)
在我的节目里。如果开始时间已过,则会执行在开始时间和当前时间之间错过的所有任务。正如文件所说:
由于上述原因,如果计划的第一次是在过去,那么任何“错过”的执行将被安排为立即“追赶”执行
有什么方法可以阻止这些“赶超”执行吗?我认为最好的方法是使用
调度调用:
schedule(TimerTask task, long delay, long period)
并预先计算第一个任务开始所需的延迟。如果所需的开始时间已经过去,只需使用0的延迟。像这样:
long delay = startTime.getTime() - System.currentTimeMillis();
delay = delay < 0 ? 0 : delay;
long delay=startTime.getTime()-System.currentTimeMillis();
延迟=延迟<0?0:延迟;