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


Timer類的方法之一是void scheduleAtFixedRate(TimerTask task, long delay, long period)。此方法排程指定的任務以固定的重複速率執行,從指定的延遲後開始。

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

**宣告** − java.util.Timer.scheduleAtFixedRate(TimerTask task, long delay, long period) 方法宣告如下:

public void scheduleAtFixedRate(TimerTask task, long delay, long period)

這裡,task是要排程的任務,delay是任務執行之前的延遲(毫秒),period是連續任務執行之間的時間間隔(毫秒)。

scheduleAtFixedRate(TimerTask task, long delay, long period) 方法會丟擲一些異常。它們如下所示:

IllegalArgumentException如果delay為負數,或者delay + System.currentTimeMillis()為負數,或者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,300,2000);
      // scheduling the task after the delay at fixed-rate
   }
}

輸出

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

更新於:2020年6月29日

320 次檢視

啟動你的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.