簡體   English   中英

使用Timer在Java中計划任務

[英]Schedule Task in java using Timer

我已經使用Java創建了時區特定的計划任務事件。 我的代碼在下面。

Timer timer = new Timer();
Calendar date = Calendar.getInstance(TimeZone.getTimeZone("Asia/Colombo"));
date.set(Calendar.HOUR_OF_DAY, 0);
date.set(Calendar.MINUTE, 0);
date.set(Calendar.SECOND, 0);
timer.schedule(new TimerTask() {
    public void run() {
        System.out.println("Runs everday morning 12.00 AM");
    }
 }, date.getTime(), 1000 * 60 * 60 * 24);

但是問題是當調用此方法時,它將很快運行此任務。 我每天需要在亞洲/科倫坡時區運行此作業12.00。 怎么做?

您計划在過去(今天的午夜)執行第一次任務,因此您的任務將立即執行。

根據javadoc

[...]如果計划的第一次是過去的時間,則計划立即執行。

解決此問題的最簡單方法是在您安排的首次執行時間上增加1天:

date.add(Calendar.DATE, 1);

另外,您可能希望將此任務的執行安排為固定速率而不是固定延遲 如果您不這樣做,您的任務將在每天的晚些時候執行,具體取決於完成任務所需的實際時間。 同樣,請參閱javadoc以獲取詳細信息。

暫無
暫無

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

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