我们如何在 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+ 浏览量

开启您的 职业生涯

完成课程认证获得证书

开始学习
广告
© . All rights reserved.