调度程序的standby()和pauseAll()之间有什么区别?

时间:2010-09-06 09:57:10

标签: java quartz-scheduler scheduler standby

我正在使用Quartz Scheduler v.1.8.0。

scheduler.standby()scheduler.pauseAll()之间有什么区别?

  

待机() -              暂时停止调度程序触发触发器。

     

pauseAll() -              暂停所有触发器 - 类似于呼叫   每个都有pauseTriggerGroup(group)   然而,在使用此组之后   方法resumeAll()必须被调用   清除调度程序的状态   '记住'所有新的触发器   将被添加时暂停。

根据我从API文档中理解的内容,我无法轻易/清楚地区分/区分它们中的每一个。我看到它们都用于相同的目的 - 暂时暂停/暂停调度程序中的所有触发器,然后是 start()(用于待机)或 resumeAll()< / em>(用于pauseAll)清除调度程序的状态。还有其他区别吗?

希望专家可以帮助我理解任何微妙的差异。

5 个答案:

答案 0 :(得分:18)

不同之处在于触发失火指令应用行为。

在待机()之后调用start()时,将忽略在待机状态下出现的任何失火。

当您在pauseAll()之后调用resumeAll()时,将会应用调度程序暂停时出现的所有失误。

答案 1 :(得分:7)

standbypauseAll之后恢复调度程序时会有所不同。

我在API文档的以下说明中做了大胆的改编。

待机

  

void standby()                throws SchedulerException暂时停止Scheduler   发射触发器。

     

调用start()时(带)   调度程序退出待机模式),   触发失火指令不会   在执行期间应用   start()方法 - 任何失火都会   之后立即检测到(由   JobStore的正常流程)。

     

调度程序未被销毁,并且   可以随时重新开始。

pauseAll

  

void pauseAll()                 throws SchedulerException暂停所有触发器    - 类似于在每个上调用pauseTriggerGroup(group)   然而,在使用此组之后   方法resumeAll()必须被调用   清除调度程序的状态   '记住'所有新的触发器   将被添加时暂停。

     

当调用resumeAll()时(到   不停顿,触发失火   将适用说明。

答案 2 :(得分:2)

这是我从源代码v1.8.6中获得的内容:

standby()只是冻结了调度程序线程,这意味着从现在起不会再触发任何触发器,即使是以后添加的那些新触发器

start()仅恢复调度程序线程,并且不会立即应用断火策略。但是所有的失火都将在以后自然应用。

pauseAll()类似于在每个现有触发器组上调用pauseTriggerGroup(),这意味着以后添加的那些新触发器组将被正常触发。并且请注意,与pauseJob()pauseJobGroup()无关,这与触发器及其组上发生的事情有关。

resumeAll()类似于在每个现有触发器组上的调用resumeTriggerGroup()。此外,在执行resumeAll()时会发生误动作。

答案 3 :(得分:0)

start()和standby()是按实例方法。在群集模式下运行的其他实例将继续触发作业。

resumeAll()和pauseAll()适用于整个群集。

答案 4 :(得分:0)

虽然pauseAll()暂停所有计划(已经由该时刻创建),但standby()暂停计划程序本身。因此,当您创建新计划时,在pauseAll()之后它将被安排并正确运行,但是如果standby()它运行时间不早于'start()'方法将在调度程序上调用。