java.util.Timer定時(shí)器,實(shí)際上是個(gè)線程,定時(shí)調(diào)度所擁有的TimerTasks。
一個(gè)TimerTask實(shí)際上就是一個(gè)擁有run方法的類,需要定時(shí)執(zhí)行的代碼放到run方法體內(nèi),TimerTask一般是以匿名類的方式創(chuàng)建。
一個(gè)完整的Timer:
java.util.Timer timer = new java.util.Timer(true);
// true 說明這個(gè)timer以daemon方式運(yùn)行(優(yōu)先級低,
// 程序結(jié)束timer也自動(dòng)結(jié)束),注意,javax.swing
// 包中也有一個(gè)Timer類,如果import中用到swing包,
// 要注意名字的沖突。
TimerTask task = new TimerTask() {
public void run() {
... //每次需要執(zhí)行的代碼放到這里面。
}
};
//以下是幾種調(diào)度task的方法:
timer.schedule(task, time);
// time為Date類型:在指定時(shí)間執(zhí)行一次。
timer.schedule(task, firstTime, period);
// firstTime為Date類型,period為long
// 從firstTime時(shí)刻開始,每隔period毫秒執(zhí)行一次。
timer.schedule(task, delay)
// delay 為long類型:從現(xiàn)在起過delay毫秒執(zhí)行一次
timer.schedule(task, delay, period)
// delay為long,period為long:從現(xiàn)在起過delay毫秒以后,每隔period
// 毫秒執(zhí)行一次。
下面是一個(gè)完整的例子,由兩個(gè)類組成,一個(gè)定制任務(wù),一個(gè)調(diào)用java.util.Timer
定制任務(wù):
import java.util.Timer;
public class TimerTaskTest extends java.util.TimerTask{
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("start");
}
}
2.調(diào)用java.util.Timer
import java.util.Timer;
public class Test {
public static void main(String[] args){
Timer timer = new Timer();
timer.schedule(new TimerTaskTest(), 1000, 2000);
try{
Thread.sleep(1000);
}catch(Exception ex){
timer.cancel();
}
}
}
根據(jù)上面的介紹,便可以在1秒后,每隔2秒執(zhí)行一次程序
建議:在使用Timer timer = new Timer()時(shí),不要用Timer timer = new Timer(true).因?yàn)檫@樣,在程序結(jié)束后,timer也自動(dòng)結(jié)束了,不利于使用