定時(shí)器類Timer在java.util包中。使用時(shí),先實(shí)例化,然后使用實(shí)例的schedule(TimerTask task, long delay)方法,設(shè)定指定的任務(wù)task在指定的延遲delay后執(zhí)行。定時(shí)器任務(wù)類TimerTask是抽象類,繼承并重寫其run()方法,可實(shí)現(xiàn)具體任務(wù)。
schedule(TimerTask task, Date time)設(shè)定指定任務(wù)task在指定時(shí)間time執(zhí)行。
cancel()方法結(jié)束這個(gè)定時(shí)器。
schedule(TimerTask task, long delay, long period)方法設(shè)定指定任務(wù)task在指定延遲delay后進(jìn)行固定延遲peroid的執(zhí)行。
scheduleAtFixedRate(TimerTask task, long delay, long period)方法設(shè)定指定任務(wù)task在指定延遲delay后進(jìn)行固定頻率peroid的執(zhí)行。
要實(shí)現(xiàn)一個(gè)定時(shí)任務(wù),運(yùn)用java中的Timer和TimerTask類可以非常容易實(shí)現(xiàn)實(shí)時(shí)調(diào)用處理函數(shù)。這兩個(gè)類使用起來非常方便,可以完成我們對(duì)定時(shí)器的絕大多數(shù)需要。
看個(gè)簡(jiǎn)單的例子:
import java.io.IOException;
import java.util.Timer;
public class TimerTest {
public static void main(String[] args){
Timer timer = new Timer();
timer.schedule(new MyTask(), 1000, 2000);//在1秒后執(zhí)行此任務(wù),每次間隔2秒,如果傳遞一個(gè)Data參數(shù),就可以在某個(gè)固定的時(shí)間執(zhí)行這個(gè)任務(wù).
while(true){//這個(gè)是用來停止此任務(wù)的,否則就一直循環(huán)執(zhí)行此任務(wù)了
try {
int ch = System.in.read();
if(ch-'c'==0){
timer.cancel();//使用這個(gè)方法退出任務(wù)
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
static class MyTask extends java.util.TimerTask{
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("________");
}
}
}