scheduleAtFixedRate
是 Java 中 ScheduledExecutorService
接口的一個方法,用于以固定的頻率執行任務。在這種情況下,任務的執行順序是由任務的提交順序決定的。當你將一個任務提交給 ScheduledExecutorService
時,它會按照預定的頻率執行該任務。
然而,scheduleAtFixedRate
并不能保證任務之間的執行順序。如果你需要確保任務按照特定的順序執行,你可以使用 ScheduledExecutorService
的 schedule
方法,該方法允許你在任務完成后安排下一個任務。這樣,你可以確保任務按照預期的順序執行。
以下是一個使用 schedule
方法的示例:
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class FixedOrderExecution {
public static void main(String[] args) {
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
Runnable task1 = () -> System.out.println("Task 1");
Runnable task2 = () -> System.out.println("Task 2");
Runnable task3 = () -> System.out.println("Task 3");
executor.schedule(task1, 0, TimeUnit.SECONDS);
executor.schedule(task2, 1, TimeUnit.SECONDS);
executor.schedule(task3, 2, TimeUnit.SECONDS);
executor.shutdown();
}
}
在這個示例中,我們創建了一個 ScheduledExecutorService
,并使用 schedule
方法安排了三個任務。任務將按照預定的順序執行,即任務 1 首先執行,然后是任務 2,最后是任務 3。注意,這里的延遲是相對于任務提交的時間,而不是相對于上一個任務完成的時間。因此,如果你需要任務按照特定的順序執行,并且每個任務之間有固定的延遲,你需要在每個任務完成后重新安排下一個任務。