2011-12-25 92 views
1

我使用EJB3.1 TimerService來調度Java中的定時器。TimerService:有沒有辦法阻止運行2個同時計時器實例?

有沒有一種常見的方法來防止運行2個同時計時器實例? 可以說我的計時器每5分鐘就會啓動一次。如果由於某種原因,計時器在5:00開始運行,並在5:07結束運行,我想在下次5:12運行(或者在5:10,只是跳過5:05的超時)。 有沒有一種簡單/內置的方法來做到這一點?

謝謝

回答

1

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

或者,您可以擁有一個共享信號量,用於在其他作業正在運行時阻止一個作業。如果一份工作很難完全停止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

相關問題