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

问题描述:

我使用EJB3.1 TimerService来调度Java中的定时器。TimerService:有没有办法阻止运行2个同时计时器实例?

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

谢谢

只是有重新安排的过程本身上完成,而不是一次安排他们都放弃了。

或者,您可以拥有一个共享信号量,用于在其他作业正在运行时阻止一个作业。如果一份工作很难完全停止5分钟,这是一个简单的解决方法。如果这种情况并不罕见,那么这些工作就会堆积起来并且不同步,因为即使已经存在被阻塞的计时器,计时器也会继续开始工作。

+0

谢谢。我想也许我可以使用来自TimerService.getTimers()的信息,但没有找到如何。 如果我没有找到任何内置的东西,可能我会用信号量解决方案(如静态变量标志)。 – lili 2011-12-25 16:09:22

+0

而不是滚动你自己的信号量,你可以使用单身。使用写入方法的容器管理并发的缺省值适用于Timeout或Schedule方法。 – 2011-12-27 00:08:43

+0

我不能使用单例,因为我可能有多个实例在运行(每个用户实例) – lili 2012-01-03 08:32:27