Timer和TimerTask
Timer和TimerTask用于创建在后台运行、等待特定时刻的线程。当时间到达时,执行链接到线程的任务。
Timer和TimerTask可一同工作。Timer类用于安排任务,被安排的任务必须是TimerTask的实例。
Timer
创建完Timer对象之后,就可以创建Timer对象调用schedule()方法以安排任务。如果创建的是非守护任务,那么当程序结束时会希望调用cancel()方法以结束任务。如果不这么做,程序可能会被挂起一段时间。
方法 |
描述 |
Timer() |
创建的Timer对象作为正常线程运行 |
Timer(boolean DThreadd) |
如果DThread为true,就执行守护线程。只要程序的剩余部分仍在继续执行,守护线程就会执行。 |
Timer(String tName) |
指定名称创建Timer线程 |
Timer(String tName, boolean DThread) |
指定名称创建Timer守护线程 |
方法 |
描述 |
void cancel() |
取消定时器线程 |
int purge() |
从定时器队列中删除已取消的任务 |
void schedule(TimerTask TTask, long wait) |
TTask被安排在由参数wait传递的周期之后执行,wait参数的单位是毫秒 |
void schedule(TimerTask TTask, long wait, long repeat) |
TTask被安排在由参数wait传递的周期之后执行,wait参数的单位是毫秒 |
void schedule(TimerTask TTask, Date targetTime) |
TTask被安排在由targetTime指定的时间执行 |
void schedule(TimerTask TTask, Date targetTime, long repeat) |
TTask被安排在由targetTime指定的时间执行,然后任务再以repeat传递的时间间隔重复执行。repeat参数的单位是毫秒 |
void sheduleAtFixedRate(TimerTask TTask, long wait, long repeat) |
TTask被安排在由参数wait传递的周期之后执行,然后任务再以repeat指定的时间间隔重复执行。wait和repeat参数的单位都是毫秒。每次重复执行的时间都和第一次执行的时间又关,而不是与前一次执行的时间有关,因此执行的整个速率是固定的 |
void scheduleAtFixedRate(TimerTask TTask, Date targetTime, long repeat) |
TTask被安排在由targetTime指定的时间执行,然后任务再以repeat传递的时间间隔重复执行。repeat参数的单位是毫秒。没次重复执行的时间都与第一次执行的时间有关,而不是与前一次执行的时间有关,因此执行的整个速率是固定的 |
TimerTask
方法 |
描述 |
boolean cancel() |
终止任务。如果成功阻止任务的执行,就返回true;否则返回false |
abstract void run() |
包含定时任务的代码 |
long scheduledExecutionTime() |
返回所安排任务最后一次执行的时间 |
使用参考
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| import java.util.*;
class MyTimerTask extends TimerTask { public void run() { System.out.println("Timer task executed"); } }
public class LearnTimer1 { public static void main(String args[]) { MyTimerTask myTask = new MyTimerTask(); Timer myTimer = new Timer(); myTimer.schedule(myTask, 1000, 500); try { Thread.sleep(5000); } catch(InterruptedException exc) { } myTimer.cancel(); } }
|