Quartz StatefulJob / non-StatefulJob

时间:2012-08-11 09:54:51

标签: java quartz-scheduler

请您向我解释一下在石英中StatefulJob的确切平均值,以及它与没有StatefulJob的区别吗?

3 个答案:

答案 0 :(得分:12)

StatefulJob接口,提供2件事,

首先:任何时候只能运行一份工作

第二:在(SimpleTriggerBean)中,您不必担心您的工作运行持续时间。这意味着下一次运行将在前一次结束后的延迟时间之后完成。

答案 1 :(得分:2)

StatefulJob保证一次只能运行一个作业。例如,如果您计划每1分钟运行一次作业,但是您的作业需要5分钟才能完成,那么在上一个作业完成之前,作业将不会再次运行。

这有助于确保在任何给定时间只运行一个作业。

下一个作业将在下一个作业中运行,而不是在上一个作业完成后立即运行。

答案 2 :(得分:0)

jobDetail.getJobDataMap().put("type","FULL");

这一行将决定我们使用statefull还是非statefull。

  1. 如果我们传递参数,那么它将是statefull。
  2. 使用statefull无法在execute方法
  3. 中传递参数
  4. 如果我们修改任何值,则执行时间为满状态,则执行作业将丢失,并且不会在同时处理时间重新触发。
  5. 只有一个作业会在第二个作业完成时执行,直到第一个作业完成。
  6. 在多调度过程中,第二个作业参数将在运行时共享给第一个作业。这是多调度过程中的一种缺点。