JAVA Quartz-如果上一个仍在运行,则跳过作业并等待下一个计划时间

use*_*156 5 quartz-scheduler

我有一个使用的Java解决方案Quartz 2.2.3,而我拥有的是:

  • 我的作业类别带有注释,@DisallowConcurrentExecution以避免并发,因此同一作业每次只能运行一次(确定)
  • 它是CRON,每1小时运行一次(确定)
  • 时间是下午1点,作业开始运行(确定)
  • 现在时间是下午2点,以前的工作尚未完成(确定)
  • 在给班级添加注释后,下一个作业将无法开始(它很好-确定)
  • 现在时间是2h:15min,第一份工作刚刚完成(确定)
  • 现在的问题是,由于第二项工作并未在下午2点开始,但现在第一项工作才刚刚结束,因此第二项工作将开始。

这是我的问题,如果前一个任务没有完成,我不想等待第二个任务,我想跳过第二个任务,并且当时间到时3pm该任务可以运行。阅读javadoc时,我添加了,withMisfireHandlingInstructionDoNothing()但是没有用。

我想我做错了什么或缺少了什么。

我的代码:

Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

JobDetail job = JobBuilder.newJob(TestCronService.class).withIdentity("testA","testB").build();


CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity("testA","testB")
.withSchedule(CronScheduleBuilder.cronSchedule("0 0 * * * ?")
.withMisfireHandlingInstructionDoNothing())
.build();


scheduler.scheduleJob(job, trigger);
scheduler.start();
Run Code Online (Sandbox Code Playgroud)

小智 5

更改功能:

withMisfireHandlingInstructionDoNothing() 
Run Code Online (Sandbox Code Playgroud)

withMisfireHandlingInstructionNextWithRemainingCount()
Run Code Online (Sandbox Code Playgroud)