scheduleAtFixedRate
是 Java 中 ScheduledExecutorService
接口的一個方法,用于以固定的頻率執行任務。這個方法的執行策略是基于時間的,而不是基于任務完成的時間。下面是這個方法的一些關鍵點:
scheduleAtFixedRate
方法允許你設置一個初始延遲(initialDelay
),這意味著在第一次執行任務之前,會等待指定的延遲時間。period
),這是每次連續執行之間的時間間隔。scheduleAtFixedRate
方法不會等待任務完成就開始計算下一次任務的執行時間。這可能導致任務的并發執行,如果任務的執行時間超過了指定的執行間隔。Future.cancel()
方法),那么 scheduleAtFixedRate
將不再繼續執行該任務。scheduleAtFixedRate
將會忽略這個異常,并繼續執行下一次任務。下面是一個簡單的示例,展示了如何使用 scheduleAtFixedRate
方法:
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class ScheduleAtFixedRateExample {
public static void main(String[] args) {
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
Runnable task = () -> {
System.out.println("Task executed at: " + System.currentTimeMillis());
try {
Thread.sleep(2000); // 模擬長時間運行的任務
} catch (InterruptedException e) {
e.printStackTrace();
}
};
executor.scheduleAtFixedRate(task, 0, 1, TimeUnit.SECONDS);
}
}
在這個示例中,我們創建了一個 ScheduledExecutorService
實例,并提交了一個任務,該任務每隔 1 秒執行一次。任務的執行時間為 2 秒,這將導致任務的并發執行。