即使预定的时间过去,石英工作仍然会发生

时间:2014-10-30 06:32:02

标签: java quartz-scheduler scheduler

我正在使用java的Quartz调度程序。 即使预定的时间已经过去,它也不会抛出调度程序异常,而是立即运行作业。例如,我确认了10月10日的作业,今天是10月30日,如果我保存了信息,它现在自己运行作业< / p>

此外,我正在使用JobListener实现手动触发作业,以便稍后在某个其他作业在同一时间点运行时对其进行计划。

请帮忙。

2 个答案:

答案 0 :(得分:2)

此行为在触发器失火指令中配置。默认指令取决于触发类型。您可以在scheduleBuilder中设置misfire指令:

Trigger trigger = newTrigger()
    .withIdentity("myTrigger", "group1")
    .startAt(new Date(2014,10,10))
    .withSchedule(withIntervalInMonths(1)
        .withMisfireHandlingInstructionDoNothing())
    .build();

答案 1 :(得分:0)

完成,只是在安排作业之前添加了时间检查,无论预定时间是否已经过了当前时间

Date startTime = cal.getTime();
//Check if the Scheduled time has passed or not
Calendar currentCal = Calendar.getInstance();
Date currentTime = currentCal.getTime();    
if(!(currentTime.compareTo(startTime)>0)){
  scheduler.scheduleJob(job,trigger);
}
相关问题