Я работаю над системой планирования в Java, которая рассылает напоминания на основе startDate , endDate и вхождения (ежечасно, ежедневно, еженедельно,ежемесячно, понедельник и т. д.).Первоначально я использовал классы Timer и TimerTask для планирования напоминаний:
Timer timer = new Timer();
timer.scheduleAtFixedRate(reminder, firstDate, period);
Недавно я переключился на ScheduledExecutorService , чтобы я мог получить большеконтроль отмены событий. ScheduledExecutorService хорошо работает для повторяющихся напоминаний, за исключением одного случая переназначения напоминания с startDate в прошлом.Функция scheduleAtFixedRate позволяет указывать только значение long для initialDelay , а не фактический Date объект:
ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
scheduler.scheduleAtFixedRate(reminder, initialDelay, period, unit);
Это создает проблему, поскольку передача отрицательного значения initialDelay по-прежнему приводит к немедленному запуску события, в результате чего оно повторяется с сейчас + period ,вместо startDate + period .
Есть идеи, как можно (пере) запланировать напоминание с startDate в прошлом?