知识点详细说明
java.util.Timer
是Java早期提供的定时任务调度工具,用于在指定延迟后或按固定间隔执行任务。以下是其核心知识点:
1. 核心组成
Timer
类:负责调度任务,内部维护一个任务队列和后台线程。TimerTask
类:抽象类,需继承并实现run()
方法定义任务逻辑。
2. 核心方法
方法 | 作用 |
---|---|
schedule(TimerTask task, long delay) |
延迟delay 毫秒后执行一次任务。 |
schedule(TimerTask task, Date time) |
在指定时间time 执行一次任务。 |
schedule(TimerTask task, long delay, long period) |
延迟delay 毫秒后开始,每隔period 毫秒重复执行任务(固定间隔)。 |
scheduleAtFixedRate(TimerTask task, long delay, long period) |
延迟delay 毫秒后开始,严格按period 毫秒间隔执行任务(追赶机制)。 |
3. 调度机制
- 单线程模型:所有任务由单个后台线程(非守护线程)顺序执行。
- 任务队列:任务按计划时间排序,执行完一个任务后再取下一个。
- 固定间隔(Fixed Delay):
下次任务时间 = 本次任务结束时间 +period
。
若任务执行时间超过period
,后续任务会延迟。 - 固定速率(Fixed Rate):
下次任务时间 = 本次任务开始时间 +period
。
若任务超时,后续任务会连续执行以追赶进度。
代码示例
import java.util.Timer;
import java.util.TimerTask;
public class TimerDemo {
public static void main(String[]