我正在使用TimerTask调度每日运行的线程。这是代码。在java中使用TimerTask调度的不寻常延迟
private void scheduleDailyProcess() {
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE, 1);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 5);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
Timer timer = new Timer();
int period = 24 * 60 * 60 * 1000; //24 hours
timer.schedule(new DailyProcess(), c.getTime(), period);
}
我希望线程在每天凌晨00:05运行。但是我注意到该线程以8秒的未指定延迟开始。
我在代码中丢失了什么吗?或者TimerTask有问题吗?
日常过程中没有延迟。
你从哪里得到你的三角洲?你的程序中有计时打印吗? – Max 2013-03-27 14:15:14
是的,我可以从日志中看到8秒的延迟。 – 2013-03-27 14:21:21
'TimerTask'不保证精确的执行时间。事实上,文档对此非常明确。如果你需要精确度,我建议使用Quartz框架 - > http://quartz-scheduler.org/。 – 2013-03-27 15:52:31