import java.util.timer.*
class TimerTaskExample extends TimerTask {
public void run() {
println new Date()
}
}
int delay = 5000 // delay for 5 sec.
int period = 1000 // repeat every sec.
Timer timer = new Timer()
timer.scheduleAtFixedRate(new TimerTaskExample(), delay, period)
输出:
Thu Apr 02 05:54:02 CST 2015
Thu Apr 02 05:54:03 CST 2015
Thu Apr 02 05:54:04 CST 2015
Thu Apr 02 05:54:05 CST 2015
Thu Apr 02 05:54:06 CST 2015
Thu Apr 02 05:54:07 CST 2015
Thu Apr 02 05:54:08 CST 2015
Thu Apr 02 05:54:09 CST 2015
Thu Apr 02 05:54:10 CST 2015
Thu Apr 02 05:54:11 CST 2015
Thu Apr 02 05:54:12 CST 2015
Java 版本:
import java.util.Timer;
import java.util.Date;
class TimerTaskTest extends java.util.TimerTask {
@Override
public void run() {
System.out.println(new Date());
}
}
public class Test {
public static void main(String[] args) {
int delay = 5000; // delay for 5 sec.
int period = 1000; // repeat every sec.
Timer timer = new Timer();
timer.schedule(new TimerTaskTest(), delay, period);
}
}
关于 Timer 和 TimerTask 的使用说明:
java.util.Timer timer = new java.util.Timer(true);
// true 说明这个timer以daemon方式运行(优先级低,
// 程序结束timer也自动结束),注意,javax.swing
// 包中也有一个Timer类,如果import中用到swing包,
// 要注意名字的冲突。
TimerTask task = new TimerTask() {
public void run() {
... //每次需要执行的代码放到这里面。
}
};
//以下是几种调度task的方法:
timer.schedule(task, time);
// time为Date类型:在指定时间执行一次。
timer.schedule(task, firstTime, period);
// firstTime为Date类型,period为long
// 从firstTime时刻开始,每隔period毫秒执行一次。
timer.schedule(task, delay)
// delay 为long类型:从现在起过delay毫秒执行一次
timer.schedule(task, delay, period)
// delay为long,period为long:从现在起过delay毫秒以后,每隔period
// 毫秒执行一次。
注意:timer.schedule(task, delay, period) 和 timer.scheduleAtFixedRate(task, delay, period) 有所不同。
前者的period是相对于前一次执行时间。而后者的period是严格按照第一次执行时间依次类推。