Я использую ScheduledExecutorService для запуска нескольких задач каждые x секунд
eg.
ScheduledExecutorService schedules;
schedules.scheduleAtFixedRate(new UpdateTask(), 0, 10, TimeUnit.SECONDS);
Работает отлично, если только система не меняет дату "в прошлое". Поскольку у нас система без батареи, наша система запускается с неправильной датой и получает правильное время немного позже из другой системы.
Если они получат правильное время в будущем, нет проблем. Если они получают время в прошлом, запланированные задачи больше не выполняются.
В любом случае, перезапустить или сбросить расписания, чтобы они начинали отсчет с нового, исправленного времени?