Планирование задачи изнутри задачи - хорошая практика? - PullRequest
1 голос
/ 23 декабря 2011

У меня есть ежедневное событие «Готово к обеду», которое должно происходить, скажем, в 15:00, но иногда оно задерживается и происходит в 15:05 или 16.20 и т. Д.

Я хочу настроить задачу «Проверка состояния обеда», которая запускается периодически, начиная за 3 часа до ожидаемого события «Готово к обеду», и выполняется через определенные интервалы до тех пор, пока ужин не будет готов. Интервал между тем, как часто я проверяю ужин, становится все короче и короче, чем ближе ко времени обеда.

Каков наилучший способ настроить это расписание? Довольно просто настроить следующий CheckDinnerTask из того, который только что запущен. Но разве это хорошая практика?

Приведенный ниже код основан на Spring Scheduling , но я открыт для любой инфраструктуры планирования.

scheduler.schedule(new CheckDinnerTask(), new CronTrigger("* 0 12 * * *"));

public class CheckDinnerTask() implements Runnable {
  run() {
      if (isDinnerReady() == false)
      {
          // Find out how long until scheduled dinner and 
          int mins = getMinutesToExpectedDinnerTime(); 
          mins /= 2;
          if (mins < 5) 
             mins = 5;
          // Reschedule this task from here?
          scheduler.scheduleWithFixedDelay(new CheckDinnerTask(), mins*60*1000);

      }
      else 
      {
          eatDinner();
      }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...