java.util.Timer SystemTime эффект? - PullRequest
       7

java.util.Timer SystemTime эффект?

3 голосов
/ 20 августа 2011

Сказал, что сейчас 6 часов, у меня есть Timer и запланировано TimerTask на 10 часов. После этого System DateTime настраивается другим сервисом (например, ntp) на 9 часов. Я все еще хочу, чтобы мой TimerTask был запущен в 10 часов, но это не так, Timer все еще ждет следующие 4 часа и запускает мой TimerTask. Что мне делать в этой ситуации?

1 Ответ

3 голосов
/ 20 августа 2011

Во-первых, вы уже в довольно неприятном беспорядке, если ваши часы не работают на 4 часа . Как правило, время корректируется только на миллисекунды или секунды, а иногда - на одну или две минуты, если машина не была подключена к сети в течение очень долгого времени. Один из вариантов - проверить, что время достаточно точное, сделав свой собственный вызов NTP перед установкой таймера.

Другим вариантом является создание разумно регулярно запускаемого таймера, например, раз в минуту или пять минут, который проверяет время и затем при необходимости принимает меры. Это немного менее эффективно, но я бы не ожидал, что эффект от пробуждения одного потока, выполняющего простую проверку раз в минуту, окажет значительное влияние на производительность. Вам следует отрегулировать регулярность проверки на основе того, насколько точно вам нужен таймер для срабатывания, и как мало влияния на производительность вам нужно.

...