如何在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
廣告
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP