当你需要启用一个定时器任务,无需复杂的操作,只需要一个JDK自带的Timer即可解决。
1.介绍
在JDK中,我们需要两个类来执行定时器任务:Timer和TimerTask
Timer定时器是线程安全的,这个类可以扩展到大量同时安排的任务,可以进行一个任务单次或多次的定时启动。
TimerTask是一个抽象类,继承了TimerTask的子类可以作为Timer的计划任务。
2.使用方法
我们需要创建一个继承了TimerTask的子类,使用方法和线程类似,也是必须重写run()方法。类似的,也可以跟Thread一样不创建TimerTask的子类,使用TimerTask的匿名内部类,这里就不做详解了。同时TimerTask也有两个非抽象的方法cancel()和scheduleExecutionTime(),分别用于取消计时任务和返回此任务最近实际执行的已安排执行时间。
然后,创建Timer对象,使用Timer的schedule方法来作定时调用。schedule方法有多种重载:
schedule(TimerTask task, Date time)
安排在指定的时间执行指定的任务。
schedule(TimerTask task, Date firstTime, long period)
安排指定的任务在指定的时间开始进行重复的固定延迟执行。
schedule(TimerTask task, long delay)
安排在指定延迟后执行指定的任务。
schedule(TimerTask task, long delay, long period)
安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。
当需要终止计时器,也可以使用Timer的cancel()方法。
比如我们写一个简单的例子:
public class TimerTaskTest extends TimerTask{
public void run(){
System.out.println(new Date()+":呵呵");
}
public static void main(String[] args){
Timer timer = new Timer();
TimerTaskTest task = new TimerTaskTest()
timer.schedule(task, 2*1000, 1000);//2秒后启动,1秒跑一次
}
}
输出如下图:
这样就是一个很简单的定时任务了。