我們如何在 Java 中實現一個計時器執行緒?


Timer 類會在給定時間一次或多次安排任務執行。它還可以作為守護執行緒在後臺執行。若要關聯 Timer 與守護執行緒,會有一個帶布林值的建構函式。Timer 可以安排按固定延遲和固定速度的任務。對於固定延遲,如果任何執行被系統垃圾回收 (GC) 延遲,其他執行也會延遲,並且每次執行都是相對於上一次執行而延遲。

對於固定速度,如果任何執行被系統垃圾回收 (GC) 延遲,那麼會連續發生 2-3 執行,以覆蓋與第一次執行開始時間對應的固定速度。Timer 類提供 cancel() 方法來取消計時器。當呼叫此方法時,Timer 會終止。Timer 類僅執行實現 TimerTask 的任務。

示例

import java.util.*;
public class TimerThreadTest {
   public static void main(String []args) {
      Task t1 = new Task("Task 1");
      Task t2 = new Task("Task 2");
      Timer t = new Timer();
      t.schedule(t1, 10000); //  executes for every 10 seconds
      t.schedule(t2, 1000, 2000); // executes for every 2 seconds
   }
}
class Task extends TimerTask {
   private String name;
   public Task(String name) {
       this.name = name;
   }
   public void run() {
      System.out.println("[" + new Date() + "] " + name + ": task executed!");
   }
}

輸出

[Wed Nov 22 06:38:50 GMT 2023] Task 2: task executed!
[Wed Nov 22 06:38:52 GMT 2023] Task 2: task executed!
[Wed Nov 22 06:38:54 GMT 2023] Task 2: task executed!
[Wed Nov 22 06:38:56 GMT 2023] Task 2: task executed!
[Wed Nov 22 06:38:58 GMT 2023] Task 2: task executed!

更新於: 2023-11-22

4,000+ 瀏覽量

開啟您的 職業生涯

完成課程認證獲得證書

開始學習
廣告