如何在 Java 中排程任務以重複固定速率執行,從指定時間開始


Timer 類的一種方法是 void scheduleAtFixedRate(TimerTask task, Date firstTime, long period)。此方法計劃指定任務以重複固定速率執行,從指定時間開始。

在固定速率執行中,每個執行都相對於初始執行的計劃執行時間進行計劃。固定速率執行適用於響應絕對時間的重複活動。同樣,固定速率執行適用於排程必須保持同步的多個重複計時器任務。

宣告 − java.util.Time.scheduleAtFixedRate(TimerTask task, Date firstTime, long period) 方法的宣告如下:

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

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

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

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

讓我們看一個示例,該示例演示如何在 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-rate
   }
}

輸出

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

更新於: 2020-06-25

2K+ 瀏覽量

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告