简介
在Java中,Timer类和TimerTask类是用于执行一次性或重复的任务的工具类。它们常常用于在特定的时间间隔后执行某个任务,或者是在某个固定的延迟之后执行某个任务。
Timer
Timer类是一个工具类,它用于安排一个任务在将来执行。你可以使用Timer类来安排一个TimerTask进行单次执行,或者进行重复的固定速率执行。
Timer类的主要方法包括:
- schedule(TimerTask task, Date time): 在指定的时间执行一次任务。
- schedule(TimerTask task, Date firstTime, long period): 在指定的时间开始执行,然后每隔指定的周期重复执行。
- schedule(TimerTask task, long delay): 在指定的延迟后执行一次任务。
- schedule(TimerTask task, long delay, long period): 在指定的延迟后开始执行,然后每隔指定的周期重复执行。
TimerTask
TimerTask类是一个抽象类,它代表了一个可以被Timer计划执行的任务。为了使用Timer来安排任务,你需要创建一个TimerTask的子类,并重写它的run方法。
TimerTask类的主要方法是:
- run(): 当任务被Timer执行时,调用此方法。
示例
import java.util.Timer;
import java.util.TimerTask;
public class TimerExample {
public static void main(String[] args) {
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Task executed at " + System.currentTimeMillis());
}
};
// 在5秒后执行任务
timer.schedule(task, 5000);
}
}
在这个示例中,我们创建了一个Timer实例和一个匿名内部类TimerTask实例。我们设置了一个5秒的延迟,然后使用Timer的schedule方法来安排任务。当延迟过去后,run方法将被调用,输出当前的时间戳。
注意:Timer和TimerTask不是线程安全的,并且Timer的单线程特性意味着任务将按照它们被安排的顺序一个接一个地执行。如果你需要并行执行任务,或者需要更高级的功能,可能需要考虑使用ScheduledExecutorService。