我想知道是否可以配置quartz来执行在任何给定时间仅在一个线程中运行的长处理作业。换句话说,我说石英配置了一个大小为5的SimpleThreadPool。我的工作每10秒触发一次,但在某些情况下可能需要10秒以上才能完成。有没有办法配置石英触发器/作业/调度程序,以便此触发器不会再次触发,因为它已在另一个线程中处于运行状态。当触发器再次触发时,池中的另一个线程将拾取它并同时运行同一作业的两个实例。感谢您的投入。
澄清:(关于使用大小为1的线程池的建议)。要求是使用5个线程配置线程池,并且在任何给定时间只能在单个线程中执行任何单个作业,换句话说,作业的实例应该只由一个线程执行。
答案 0 :(得分:22)
如果您正在使用Quartz 1.x,则使Job类实现StatefulJob
。如果您正在使用Quartz 2.x,则将@DisallowConcurrentExecution
注释添加到作业类。
答案 1 :(得分:1)
组
org.quartz.threadPool.threadCount=1
一次只有一个石英工人线程