Timer TimerTask 定时器线程

来源:互联网 发布:mac finder 复制路径 编辑:程序博客网 时间:2024/04/27 20:12


(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)安排指定的任务在指定的时间开始进行重复的固定速率执行.


(6)Timer.scheduleAtFixedRate(TimerTask task,long delay,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 秒后执行指定任务一次

}
}





0 0