当前位置: 首页 > 面试题库 >

确保Spring Quartz作业执行不重叠

瞿博学
2023-03-14
问题内容

我有一个Java程序,每20秒从Spring Qquartz执行一次。有时只需几秒钟即可执行,但是随着数据变大,我确信它会运行20秒或更长时间。

在一个实例仍在执行时,如何防止Quartz触发/触发作业?发射2个在数据库上执行相同操作的作业效果不佳。有没有办法可以进行某种同步?


问题答案:

如果您需要做的是每20秒发射一次,则Quartz严重过度使用。java.util.concurrent.ScheduledExecutorService对于这项工作,应该足够了。

ScheduledExecutorService还提供了两个语义用于调度。“固定比率”将尝试每20秒运行一次作业,而不会出现重叠,而“固定延迟”将尝试在第一个作业结束与下一个作业开始之间间隔20秒。如果要避免重叠,则固定延迟是最安全的。



 类似资料:
  • 我有以下触发器配置: 我的工作可能超过5秒。 可行吗? 谢谢

  • 我正在尝试使用Quartz来调度运行在GlassFish上的web应用程序中的作业。我在用RamjobStore。问题是,有时调度的作业没有被执行,即使它是在过去或将来被调度的。作业数量非常少,排定程序上一直排定的作业总数不到20个,同时保证最多运行1个作业,所以我假设线程计数不是问题,我可以将它设置为ThreadCount1,它仍然可以工作。在servlet被销毁之前,调度程序也不会被关闭。那么

  • 使用spring 2.5和quartz 1.6.2,我一直试图每分钟触发一个计划任务 我的xml文件是: 我的代码是:

  • 我在Openshift环境中运行SCDF。我正在安排一个Spring批处理作业每5分钟运行一次。有时作业可能运行超过5分钟。在这种情况下,是否可以保留下一个计划的作业执行,直到上一个完成其执行? 我们不想改变作业执行的频率和间隔。 谢了。

  • 我正在使用一个石英工作执行特定的任务。 如果另一个Main Job实例仍在运行,我想阻止调度器启动第二个Main Job实例...

  • 我有这份工作: 作业应该每小时运行一次。我以为问题是cronexpression。这就是为什么我把它改成上面的表达式。在我有这个表达之前: null