2011-08-02 77 views
8

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

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

+0

如何将池大小降至1? – fmucar

回答

20

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

1

设置

org.quartz.threadPool.threadCount=1 

将会有一个石英工作线程在同一时间