Timer TimerTask 定时器线程
2014-02-23 17:48
281 查看
(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 秒后执行指定任务一次
}
}
(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 秒后执行指定任务一次
}
}
相关文章推荐
- POSIX定时器timer_create()以及线程中的gettid() 和pthread_self()
- Java 中Timer和TimerTask 定时器和定时任务使用的例子
- 定时器与线程的同步-(sync between timer and thead)
- 线程配合及Timer TimerTask理解
- Java多线程2-线程协作、Timer和TimerTask
- 线程学习笔记(八)-定时器(Timer)
- 04____定时器(Timer和TimerTask)
- Java 中Timer和TimerTask 定时器和定时任务使用的例子
- 定时器Timer、线程(池)
- 非UI线程可以去刷新UI吗(timertask调用progressbar的setProgress的特例)
- 浅谈Timer和TimerTask与线程的关系
- java--timer--task定时器使用实例
- 定时器中实现数据库表数据移动的功能,Exception in thread "Timer-0" isExist java.lang.NullPointerException定时器中线程报错。
- Thread线程的停止与Timer定时器的停止方法
- java中使用线程实现Timer(定时器)原理和源码
- 多线程 定时器 Timer TimerTask
- java学习初探十八之线程的Timer定时器
- 1:java.util.Timer类是一种工具,线程用其安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。 2:TimerTask类是由 Timer 安排为一次执行或重复执行的任
- Java 中Timer和TimerTask 定时器和定时任务使用的例子
- Java 中Timer和TimerTask 定时器使用