Я планирую поток для ежедневного запуска с использованием TimerTask. Вот код.Необычная задержка при планировании с помощью TimerTask в java
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?
В пределах DailyProcess нет задержки.
Откуда вы получаете свою дельту? У вас есть временные распечатки в вашей программе? – Max
Да, я вижу задержку в 8 секунд из моих журналов. –
'TimerTask' не гарантирует точное время выполнения. Фактически, документация в нем довольно подробно. Если вам нужна точность, я предлагаю использовать рамки Quartz -> http://quartz-scheduler.org/. –