从任务中安排任务 - 良好实践?

时间:2011-12-23 11:29:37

标签: java spring quartz-scheduler

我每天都有“晚餐准备”活动,应该在15:00发生,但有时会延迟,发生在15:05或16.20等。

我想设置一个定期运行的“检查晚餐状态”任务,在预期的Dinner Ready事件发生前3小时开始,并按照规定的时间间隔运行,直到晚餐准备就绪。我吃晚餐的频率越来越短,越接近晚餐时间。

设置此计划的最佳方法是什么?从刚刚运行的CheckDinnerTask中设置下一个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();
      }
  }
}

0 个答案:

没有答案