如何在 Java 中实现计时器线程?
javaobject oriented programmingprogramming更新于 2024/5/10 16:25:00
Timer 类安排任务在给定时间运行一次或多次。它也可以作为守护线程在后台运行。要将 Timer 与守护线程关联,有一个带有 boolean 值的构造函数。Timer 以固定延迟和固定速率安排任务。在固定延迟中,如果任何执行被 System GC 延迟,则其他执行也将被延迟,并且每个执行都与前一个执行相对应地延迟。在固定速率中,如果任何执行被 System 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); // 每 10 秒执行一次 t.schedule(t2, 1000, 2000); // 每 2 秒执行一次 } } 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!"); } }
输出
[Thu Aug 01 21:32:44 IST 2019] Task 2: task executed! [Thu Aug 01 21:32:46 IST 2019] Task 2: task executed! [Thu Aug 01 21:32:48 IST 2019] Task 2: task executed! [Thu Aug 01 21:32:50 IST 2019] Task 2: task executed! [Thu Aug 01 21:32:52 IST 2019] Task 2: task executed! [Thu Aug 01 21:32:53 IST 2019] Task 1: task executed! [Thu Aug 01 21:32:54 IST 2019] Task 2: task executed! [Thu Aug 01 21:32:56 IST 2019] Task 2: task executed! [Thu Aug 01 21:32:58 IST 2019] Task 2: task executed! [Thu Aug 01 21:33:00 IST 2019] Task 2: task executed!