TimerService:有没有办法防止同时运行2个计时器实例?

时间:2011-12-25 15:41:06

标签: scheduler ejb-3.1

我使用EJB3.1 TimerService来安排Java中的计时器。

是否有一种阻止同时运行2个计时器实例的常用方法? 让我们说我的计时器每5分钟发射一次。如果由于某种原因计时器在5:00开始运行并在5:07结束运行,我想在下一次5:12运行(或者在5:10运行,只是在5:05跳过超时)。 是否有简单/内置的方式来做到这一点?

谢谢

1 个答案:

答案 0 :(得分:1)

让流程在完成时重新安排,而不是立即安排它们。

或者,您可以拥有一个共享信号量,在另一个作业运行时阻止一个作业。如果一项工作很少停止整整5分钟,这是一个简单的修复。如果这种情况并不罕见,那么作业将会叠加并且不同步,因为计时器将继续启动,即使已经存在被阻止的作业也会知道作业。