Java定时器Timer源码详解
Java中的Timer类位于java.util包中,用于在后台线程中安排任务执行。它允许开发者安排任务在特定时间执行一次或定期重复执行。下面将从源码角度详细解析Timer的工作原理,并给出代码示例。
Timer的核心结构
Timer类的核心依赖于两个关键组件:
- TaskQueue:一个优先级队列,用于存储待执行的
TimerTask对象。 - TimerThread:一个后台线程,负责从
TaskQueue中取出任务并执行。
public class Timer {
private final TaskQueue queue = new TaskQueue();
private final TimerThread thread = new TimerThread(queue);
}
TaskQueue内部使用堆结构实现,确保每次取出的任务都是最早需要执行的。TimerThread继承自Thread,在其run方法中循环检查队列并执行任务。
TimerTask与任务调度
TimerTask是一个抽象类,实现了Runnable接口。用户通过继承TimerTask并重写run方法定义具体任务逻辑。
public abstract class TimerTask implements Runnable {
long nextExecutionTime; // 下一次执行时间
long period; // 重复执行间隔(毫秒)
boolean fixedRate; // 是否为固定速率模式
}
Timer提供了多种调度方法:
schedule(TimerTask task, long delay):延迟指定时间后执行一次。schedule(TimerTask task, Date time):在指定时间执行一次。scheduleAtFixedRate(TimerTask task, long delay, long period):固定速率重复执行。

127

被折叠的 条评论
为什么被折叠?



