Предотвращение одновременного выполнения экземпляров, запускаемых определенным триггером

#java #concurrency #quartz-scheduler

#java #параллелизм #quartz-планировщик

Вопрос:

@DisallowConcurrentExecution Аннотация предотвращает одновременное выполнение экземпляров заданий определенного задания, но возможно ли предотвратить одновременное выполнение заданий, запущенных с помощью определенного триггера?

Ответ №1:

Возможно, вы могли бы реализовать такое ограничение с помощью пользовательского TriggerListener, который накладывает вето на выполнение задания и переносит триггер на более позднюю дату или что-то подобное.

В противном случае вы можете просто захотеть создать копию задания, которое будет запущено вашим конкретным триггером.

Ответ №2:

Согласно Javadoc планировщика Quartz, @DisallowConcurrentExecution аннотация предотвращает одновременное выполнение экземпляров заданий на основе уникальности JobKey .

В Javadoc нет других аннотаций, для которых есть аналогичная функция Triggers .

Тогда единственной другой возможностью было бы определить пользовательский JobKey — каким бы ни был класс final .

TLDR; Нет, вы не можете этого сделать, не выполнив собственную синхронизацию.