TimerTask是Java中用于定义定时任务的抽象类,需继承并重写run()方法;通过Timer调度,支持延迟或周期执行;但其单线程特性及异常导致停止的问题需注意,复杂场景建议用ScheduledExecutorService。
TimerTask 是 Java 中一个抽象类,位于 java.util 包下,用来表示一个可以在指定时间或周期性执行的任务。它通常和 Timer 类配合使用,实现定时任务调度功能。
TimerTask 的基本作用
TimerTask 本身是一个可运行的任务模板,你需要继承它并重写其 run() 方法来定义具体要执行的逻辑。它不能直接实例化,必须通过子类实现。
常见用途包括:
- 在一段时间后执行某个操作
- 每隔固定时间重复执行某项任务(如日志清理、数据同步)
如何使用 TimerTask
使用步骤如下:
- 创建一个类继承
TimerTask - 重写
run()方法编写业务逻辑 - 创建
Timer对
象并安排任务执行
import java.util.Timer;
import java.util.TimerTask;
public class MyTask extends TimerTask {
public void run() {
System.out.println("任务执行了: " + new java.util.Date());
}
public static void main(String[] args) {
Timer timer = new Timer();
// 延迟1秒后开始,每2秒执行一次
timer.schedule(new MyTask(), 1000, 2000);
}
}
Timer 和 TimerTask 的注意事项
虽然使用简单,但有几点需要注意:
- Timer 是单线程的,多个任务如果有一个执行时间过长,会影响其他任务的调度
- 如果任务抛出未捕获异常,整个 Timer 可能会停止运行
- 对于更复杂或高可靠性的调度需求,建议使用
ScheduledExecutorService









