TimerService: есть ли способ предотвратить запуск 2 одновременных экземпляров таймера? - PullRequest
1 голос
/ 25 декабря 2011

Я использую EJB3.1 TimerService для планирования таймеров в Java.

Есть ли общий способ предотвратить запуск 2 одновременных экземпляров таймера? Допустим, мой таймер срабатывает каждые 5 минут. Если по какой-то причине таймер начал работать в 5:00 и закончил в 5:07, я хочу запустить в следующий раз в 5:12 (или в 5:10, просто пропустите тайм-аут в 5:05). Есть ли простой / встроенный способ сделать это?

спасибо

1 Ответ

1 голос
/ 25 декабря 2011

Просто сделайте так, чтобы процесс перепланировал себя по завершении, а не планировал их все сразу.

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

...