#java #concurrency #quartz-scheduler
#java #параллелизм #quartz-планировщик
Вопрос:
@DisallowConcurrentExecution
Аннотация предотвращает одновременное выполнение экземпляров заданий определенного задания, но возможно ли предотвратить одновременное выполнение заданий, запущенных с помощью определенного триггера?
Ответ №1:
Возможно, вы могли бы реализовать такое ограничение с помощью пользовательского TriggerListener, который накладывает вето на выполнение задания и переносит триггер на более позднюю дату или что-то подобное.
В противном случае вы можете просто захотеть создать копию задания, которое будет запущено вашим конкретным триггером.
Ответ №2:
Согласно Javadoc планировщика Quartz, @DisallowConcurrentExecution
аннотация предотвращает одновременное выполнение экземпляров заданий на основе уникальности JobKey
.
В Javadoc нет других аннотаций, для которых есть аналогичная функция Triggers
.
Тогда единственной другой возможностью было бы определить пользовательский JobKey
— каким бы ни был класс final
.
TLDR; Нет, вы не можете этого сделать, не выполнив собственную синхронизацию.