java-doc-工具

Timer和TimerTask

Timer和TimerTask用于创建在后台运行、等待特定时刻的线程。当时间到达时,执行链接到线程的任务。

Timer和TimerTask可一同工作。Timer类用于安排任务,被安排的任务必须是TimerTask的实例。

Timer

创建完Timer对象之后,就可以创建Timer对象调用schedule()方法以安排任务。如果创建的是非守护任务,那么当程序结束时会希望调用cancel()方法以结束任务。如果不这么做,程序可能会被挂起一段时间。

  • Timer构造函数
方法 描述
Timer() 创建的Timer对象作为正常线程运行
Timer(boolean DThreadd) 如果DThread为true,就执行守护线程。只要程序的剩余部分仍在继续执行,守护线程就会执行。
Timer(String tName) 指定名称创建Timer线程
Timer(String tName, boolean DThread) 指定名称创建Timer守护线程
  • 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

  • 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();
}
}