标签:
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是严格按照第一次执行时间依次类推。
标签:
原文地址:http://my.oschina.net/u/553266/blog/394940