我想同时只执行5个作业。如果由于缺少空闲线程而无法启动作业,我希望它在自由线程出现时启动,并且只有一次。 这是我的代码:
SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory("quartz.properties");
sched = schedFact.getScheduler();
sched.start();
String jobName = generateJobDetailName();
JobDetail jobDetail = new JobDetail(jobName, GRP_Immediate, MyJob.class);
jobDetail.getJobDataMap().put(MyJob.DATA, data);
Trigger trigger = TriggerUtils.makeImmediateTrigger(0, 0);
trigger.setName(jobName + "_Simpletrigger");
sched.scheduleJob(jobDetail, trigger);
这是我的quartz.properties
文件:
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 5
org.quartz.threadPool.threadPriority = 5
但有一些我无法理解的东西。我需要为所需行为设置什么样的misfire instruction
?
答案 0 :(得分:1)
您应该使用SimpleTrigger.MISFIRE_INSTRUCTION_FIRE_NOW
(请注意您的Trigger是SimpleTrigger):
trigger.setMisfireInstruction(SimpleTrigger.MISFIRE_INSTRUCTION_FIRE_NOW);
因为你有一个'一次性'触发器,应该尽早执行。