我们如何在 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!
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP