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


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

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

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

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

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

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

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

IllegalArgumentException如果 delay 為負數,或 delay + System.currentTimeMillis() 為負數,或 period <= 0,則丟擲此異常。
IllegalStateException如果任務之前已安排或取消,計時器已取消,或計時器執行緒已終止,則丟擲此異常。
NullPointerException如果 task 為空,則丟擲此異常。

讓我們看一個演示 void schedule(TimerTask task, long delay, long period) 方法用法的程式:

示例

 線上演示

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
      // scheduling the task for repeated fixed-delay execution, beginning after the specified delay
      timer.schedule(task, 800, 1000);
   }
}

輸出

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

更新於: 2020-06-25

1K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.