当有多个石英线程时,石英只在一个线程中执行作业

时间:2011-08-02 21:00:33

标签: java quartz-scheduler

我想知道是否可以配置quartz来执行在任何给定时间仅在一个线程中运行的长处理作业。换句话说,我说石英配置了一个大小为5的SimpleThreadPool。我的工作每10秒触发一次,但在某些情况下可能需要10秒以上才能完成。有没有办法配置石英触发器/作业/调度程序,以便此触发器不会再次触发,因为它已在另一个线程中处于运行状态。当触发器再次触发时,池中的另一个线程将拾取它并同时运行同一作业的两个实例。感谢您的投入。

澄清:(关于使用大小为1的线程池的建议)。要求是使用5个线程配置线程池,并且在任何给定时间只能在单个线程中执行任何单个作业,换句话说,作业的实例应该只由一个线程执行。

2 个答案:

答案 0 :(得分:22)

如果您正在使用Quartz 1.x,则使Job类实现StatefulJob。如果您正在使用Quartz 2.x,则将@DisallowConcurrentExecution注释添加到作业类。

答案 1 :(得分:1)

org.quartz.threadPool.threadCount=1

一次只有一个石英工人线程