概览
Timer是一种定时工具,用来在后台线程计划执行指定的任务.它可以计划执行一个任务或者反复执行多次. TimerTask是一个抽象类,它的子类代表可以被Timer计划的任务
Example
import java.util.Timer;
import java.util.TimerTask;
public class Reminder {
Timer timer;
public Reminder(int seconds) {
timer = new Timer();
timer.schedule(new RemindTask(), seconds*1000);
}
class RemindTask extends TimerTask {
public void run() {
System.out.println("Time's up!");
timer.cancel(); //Terminate the timer thread
}
}
public static void main(String args[]) {
System.out.println("About to schedule task.");
new Reminder(5);
System.out.println("Task scheduled.");
}
}
运行结果
About to schedule task.
Task scheduled.
##5秒之后输出
Time\'s up!
通过代码可以总结用Timer线程直线和执行一个计划任务的步骤:
- 实现自动以的TimerTask子类,run方法包含要执行的代码
- 实例化Timer类,创建计时器后台线程
- 实例化任务对象
- 制定执行计划
终止线程
默认情况下,只要一个程序的timer线程在运行,那么这个程序会一直保持运行,结束的方法有四种:
- 调用Timer的cancel方法
- 让Timer线程成为一个Daemon线程
- 当timer相关的所有task都执行完毕后,删除所有此timer对象引用(设置为null)
- 调动System.exit()方法.
方法摘要
Timer类方法摘要
void cancel()
//终止此计时器,丢弃所有当前已安排的任务。
int purge()
//从此计时器的任务队列中移除所有已取消的任务。
void schedule(TimerTask task, Date time)
//安排在指定的时间执行指定的任务。
void schedule(TimerTask task, Date firstTime, long period)
//安排指定的任务在指定的时间开始进行重复的固定延迟执行。
void schedule(TimerTask task, long delay)
//安排在指定延迟后执行指定的任务。
void schedule(TimerTask task, long delay, long period)
//安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。
void scheduleAtFixedRate(TimerTask task, Date firstTime, long period)
//安排指定的任务在指定的时间开始进行重复的固定速率执行。
void scheduleAtFixedRate(TimerTask task, long delay, long period)
//安排指定的任务在指定的延迟后开始进行重复的固定速率执行。
TimerTask类方法摘要
boolean cancel() //取消此计时器任务。
abstract void run() //此计时器任务要执行的操作。
long scheduledExecutionTime() //返回此任务最近实际 执行的已安排 执行时间。