gpt4 book ai didi

java - quartz 调度程序中的 pauseJob 和 pauseTrigger 之间的区别?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:09:24 24 4
gpt4 key购买 nike

quartz 调度器中的 pauseJob() 和 pauseTrigger() 有什么区别?怎样才能从中选用呢?现在我想暂停/中断一项特定的工作,我该怎么做

下面给出了我的调度程序代码

JobDetail job = new JobDetail();
job.setName("pollerjob"+pollerId);
job.setJobClass(Pollersheduller.class);
job.getJobDataMap().put("socialMediaObj", socialMediaObj);
job.getJobDataMap().put("queue", queue);


//configure the scheduler time
SimpleTrigger trigger = new SimpleTrigger();
trigger.setName("pollerSocial"+pollerId);
trigger.setStartTime(new Date(System.currentTimeMillis() + 1000));
trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
trigger.setRepeatInterval(Long.parseLong(intervel));


//schedule it
Scheduler scheduler = null;
try {
scheduler = new StdSchedulerFactory().getScheduler();
scheduler.start();
scheduler.scheduleJob(job, trigger);
} catch (SchedulerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

最佳答案

您可能已经注意到,在 Quartz 中,单个作业可以与多个触发器相关联。如果查看 Quartz 源代码,您会发现 pauseJob 方法只是检索与指定作业关联的所有触发器并暂停它们,而 pauseTrigger 方法仅暂停特定触发器。这就是主要区别。

请注意,在 Quartz 中暂停作业不会暂停当前正在运行的作业,它只会阻止作业在未来运行!

如果你想中断一个正在运行的作业,那么你可以使用org.quartz.Interruptable中定义的interruptJob方法。作业必须实现的接口(interface)。如果你的工作实现了这个接口(interface),那么实现中断逻辑完全取决于你。例如,您可以在调用 interruptJob 方法时设置某种标志,然后您需要在作业的执行方法中检查此标志的值。

关于java - quartz 调度程序中的 pauseJob 和 pauseTrigger 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27823159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com