Если кварц выполняет работу только в одном потоке, когда имеется несколько кварцевых потоков - PullRequest
8 голосов
/ 03 августа 2011

Мне было интересно, можно ли настроить кварц для выполнения длинного задания обработки, выполняемого только в одном потоке в любой момент времени.Другими словами, скажем, у меня есть кварц, настроенный с SimpleThreadPool размера 5. И у меня есть задание, которое срабатывает каждые 10 секунд, но в определенных ситуациях это может занять более 10 секунд.Есть ли способ настроить кварцевый триггер / задание / планировщик так, чтобы этот триггер не срабатывал снова, поскольку он уже находится в рабочем состоянии в другом потоке.Когда триггер срабатывает снова, другой поток из пула подхватит его и одновременно запустит два экземпляра одного и того же задания.Спасибо за ваш вклад.

Пояснение: (за предложения по использованию пула потоков размера 1).Требуется настроить пул потоков на 5 потоков и иметь любое одно задание для выполнения только в одном потоке в любой момент времени, другими словами, экземпляр задания должен выполняться только одним потоком.

Ответы [ 2 ]

22 голосов
/ 05 августа 2011

Если вы используете Quartz 1.x, сделайте класс Job реализующим StatefulJob.Если вы используете Quartz 2.x, добавьте аннотацию @DisallowConcurrentExecution к классу заданий.

1 голос
/ 04 августа 2011

set

org.quartz.threadPool.threadCount=1

Одновременно будет один кварцевый рабочий поток

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...