簡體   English   中英

安排Java中的任務每隔X天運行一次或僅執行一次

[英]Scheduling a task in Java to run every X days or execute once only

這里既有stackoverflow也有Java初學者。

所以我試圖在我的應用程序中實現一個調度程序。 我希望某個進程/作業每X時間運行一次或僅運行一次。 這次需要配置,因此我制作了一個簡單的Schedule對象,其中包含startDatelastExecuted ,頻率和獲取器以及設置器的枚舉之類的字段。

現在,很容易使它每隔X天執行一次任務-例如,我剛剛使用了Groovy的TimeCategory,並創建了一個不斷運行的線程,並檢查lastExecuted和當前時間之間的時間是否大於frequency enum指定的時間Schedule frequency enum

問題 -我要如何處理幾個月? 如果我將頻率設置為每月一次,該如何處理不同的月份長度? 我猜,一種替代方法是每個月都有一個很大的switch語句。 但這似乎不是一個很好的解決方案。 是否可以以更優雅的方式做到這一點( 最好不要使用任何其他庫或不推薦使用的Java方法,例如Date的getDay()方法等 )。

謝謝。

您可以使用Calendar類,即在每個月的1號安排一些時間:

Calendar now = Calendar.getInstance();

now.set(Calendar.DAY_OF_MONTH, 1);


for (int i = 0; i < 10; i++)
{
     now.add(Calendar.MONTH, 1);
     scheduler.scheduleAt(now); // or whatever you are using to schedule
}

盡管不推薦使用Date.getDay,但是如果您在Date上閱讀了Javadoc,它將指向您替代不推薦使用的方法。

在這種情況下,您可能要使用Calendar類來檢索日期和時間信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM