Quartz StatefulJob / non-StatefulJob

你能否向我解释一下在石英中StatefulJob的确切平均值,它与没有StatefulJob的区别?

StatefulJob界面,提供2件事,

第一:任何时候都只能运行一份工作

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

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

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

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

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

这一行将决定我们使用statefull或non-statefull。

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