(1)Timer.schedule(TimerTask task,Date time)安排在制定的时间执行指定的任务。
(2)Timer.schedule(TimerTask task,Date firstTime ,long period)安排指定的任务在指定的时间开始进行重复的固定延迟执行.
(3)Timer.schedule(TimerTask task,long delay)安排在指定延迟后执行指定的任务.
(4)Timer.schedule(TimerTask task,long delay,long period)安排指定的任务从指定的延迟后开始进行重复的固定延迟执行.
(5)Timer.scheduleAtFixedRate(TimerTask task,Date firstTime,long period)安排指定的任务在指定的时间开始进行重复的固定速率执行.
Timer构造函数:
Timer(int delay,ActionListener listener):建立一个Timer组件,并在每一次delay的时间点上触发ActionEvent. 使用Timer组件它会在根据你所给予的delay时间,周期性的触发ActionEvent事件
,如果你要处理这个事件,你必须实作 ActionListener界面所定义的actionPerformed()方法。要开始激活Timer组件,你可以用start()方法,要停止Timer组件可以使用 stop()方法,要从新激活
Timer组件可以使用restart()方法,若只想Timer组件只触发一次ActionEvent事件,可利用 setRepeats(false)方法,将参数设为false,若要设置delay时间则可用setDelay()方法。
默认情况下,只要一个程序的timer线程在运行,那么这个程序就会保持运行。当然,可以通过以下四种方法终止一个timer线程:
1) 调用timer的cancle方法。可以从程序的任何地方调用此方法,甚至在一个timer task的run方法里。
2) 让timer线程成为一个daemon线程(可以在创建timer时使用new Timer(true)达到这个目地),这样当程序只有daemon线程的时候,它就会自动终止运行。
3) 当timer相关的所有task执行完毕以后,删除所有此timer对象的引用(置成null),这样timer线程也会终止。
4) 调用System.exit方法,使整个程序(所有线程)终止。
列:
import java.awt.Toolkit;
import java.util.TimerTask;
public class MyTimerTask extends TimerTask{
private Timer timer;
public MyTimerTask(Timer timer) {
this.timer = timer;
}
@Override
public void run() {
System.out.println("任务执行");
timer.cancel(); //终止定时器
// System.exit(0); //退出程序
}
}
用下面的main方法运行
import java.util.Timer;
public class TimerDemo {
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new MyTimerTask(timer), 5000); //5 秒后执行指定任务一次
}
}