我正在尝试每 5 分钟执行一次任务。任务需要从:xx:00、xx:05、xx:10、xx:15 等开始,所以如果时间是 xx:37,任务将从 xx:40 开始。
我使用以下代码来做到这一点:
Date d1 = new Date();
d1.setMinutes(d1.getMinutes() + 5 - d1.getMinutes()%5);
d1.setSeconds(0);
this.timer.schedule(new Send(), d1, TEN_MINUTES/2);
发送看起来像这样:
class Send extends TimerTask
{
public void run()
{
if(SomeCondition)
{
Timestamp ts1 = new Timestamp(new java.util.Date().getTime());
SendToDB(ts1);
}
}
}
所以结果应该是记录,如果你 % 分钟,结果将为 0。但我所拥有的记录时间是:
*05:35:00 *07:44:40 *07:54:40 *09:05:31 *09:50:00
正如您所看到的,第一个任务完美地开始了,但随后出现了问题。
我的猜测是该任务会在上一个任务完成后计算 5 分钟的跳转,因此任务运行时间会受到影响,但这只是一个猜测。