定時(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("________"); } } } |