2009-11-06 42 views
1

你好我在石英工作時已經實現了一些東西。一個cron設置爲每2min醒來時用表達式0 0/2 * * *? 。石英工作調教

當你在13:10:30運行項目時,第一個動作發生在13:12:00和第二個13:14:00,其餘的每2分鐘0秒。顯然,在項目啓動和首次發生行動之間,只有1毫秒:30秒。

無論項目在什麼時間開始,有沒有辦法讓第一次出現尊重2分鐘?

回答

3

Cron作業在石英配置爲使用CronTrigger類。另一種方法是使用SimpleTrigger,您可以使用固定的延遲時間間隔來構建它。 SimpleTrigger有各種構造函數,允許您指定開始時間,結束時間,重複次數,重複間隔等。如此說,我建議不要使用Quartz進行這種調度,並使用java.util.concurrent.Executors.newScheduledThreadPool()。當談到簡單的重複任務時,它比Quartz容易得多。

1

石英可能使用cron進行調度,它基於日期和時間,而不是持續時間。這意味着您定義的cron表達式與機器上的當前時間直接相關,而不是應用程序啓動時的時間。

我不知道Quartz配置會幫助你解決你的問題。然而,一個解決方案是創建你自己的Thread,其推出的應用程序的過程開始,基本上等待2分鐘調用方法之前:

while (running) { 
    Thread.sleep(1000 * 120); 
    doStuff(); 
} 
+0

你剛剛給我一個主意的人!謝謝,但我會多挖一點,以正確地做到這一點。 – 2009-11-06 10:54:27

+0

石英不是基於cron的。它支持語法,但不需要它。 – skaffman 2009-11-06 11:04:05

+0

編輯以反映這一點。 – romaintaz 2009-11-06 11:06:04