如何在Java中排程任務,使其以固定的延遲重複執行,並從指定時間開始


Timer類中的一個方法是void schedule(TimerTask task, Date firstTime, long period)方法。此方法安排任務以固定的延遲重複執行,從指定時間開始。

在固定延遲執行中,每次執行都相對於前一次執行的原始執行時間進行排程。如果由於某種原因(例如垃圾回收)導致執行延遲,則後續執行也將延遲。

宣告 − java.util.Timer.schedule(TimerTask task, Date firstTime, long period)宣告如下:

public void schedule(TimerTask task, Date firstTime, long period)


其中,task是要排程的任務,firstTime是執行任務的第一次時間,period是連續任務執行之間以毫秒為單位的時間。

schedule(Timertask task, Date firstTime, long period)方法會丟擲一些異常。它們如下所示:

IllegalArgumentException如果firstTime.getTime為負數或period<=0,則丟擲此異常。
IllegalStateException如果任務已提前排程或取消,計時器已取消或計時器執行緒已終止,則丟擲此異常。
NullPointerException如果task為null,則丟擲此異常。


讓我們看一個示例,該示例演示如何在Java中排程任務以從指定時間開始以固定的延遲重複執行:

示例

 線上演示

import java.util.*;
class MyTask extends TimerTask {
   public void run() {
      System.out.println("Task is running");
   }
}
public class Example {
   public static void main(String[] args) {
      Timer timer = new Timer(); // creating timer
      TimerTask task = new MyTask(); // creating timer task
      timer.scheduleAtFixedRate(task,new Date(),2000);
      // scheduling the task at the specified time at fixed-delay
   }
}

輸出

Task is running
Task is running
Task is running
Task is running
Task is running

更新於:2020年6月26日

514 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.