2015-05-04 4 views
1

У меня возникла проблема с планировщиком Java. Я использую TimerTask, когда я планирую задачу в определенное время и изменяю время работы ОС, поток TimerTask не получает обновление смены времени. Таким образом, запланированное задание не выполняется в указанное время. Я столкнулся с этой проблемой, когда я работал над летней экономией.Как получить уведомление при изменении времени ОС

+0

Что значит «изменить время»? –

+0

, когда происходит изменение дня. Время будет сброшено на 1 час назад или вперед. Когда это изменение произойдет, поток получит уведомление. – Madhusudhan

+0

, когда происходит изменение дня. Время будет сброшено на 1 час назад или вперед. Когда это изменение произойдет, поток получит уведомление. Допустим, что в 10 утра поток пойдет ждать, и я заставил его выполнить задачу в 11 утра, но между 10 утрами и 11 утрами время возвращается назад на 1 час. Если сброс времени произойдет с 10:30 до 9:30, то моя задача, которую я намеревался выполнить в 11:00, будет выполняться в 10 утра только потому, что я заставил ее ждать 1 час. Мой вопрос заключается в том, будет ли поток получать уведомление об изменении времени и выполнить только с 11AM или поток будет выполняться с 10 утра. – Madhusudhan

ответ

0

Общая проблема, вероятно, в том, что миллиметр Date с 1970 года UTC является независимым от дневного времени.

Чтобы получить информацию о текущем времени - см этот ответ: How to tackle daylight savings using Timezone in java

Как осуществить? Напишите наблюдателя в отдельном потоке, который проверяет время каждые несколько секунд или добавляет такую ​​задачу в cron (Quartz?). Проверьте смещение часовой пояс между каждым вызовом. Если они меняются, используйте событие для повторной инициализации своего приложения, однако это необходимо.

Смежные вопросы