這兩個類使用起來非常方便,可以完成我們對定時器的絕大多數需求
Timer類是用來執行任務的類,它接受一個TimerTask做參數
Timer有兩種執行任務的模式,最常用的是schedule,它可以以兩種方式執行任務:1:在某個時間(Data),2:在某個固定的時間之后(int delay).這兩種方式都可以指定任務執行的頻率
java.util.Timer定時器,實際上是個線程,定時調度所擁有的TimerTasks。
一個TimerTask實際上就是一個擁有run方法的類,需要定時執行的代碼放到run方法體內,TimerTask一般是以匿名類的方式創建。
TimerTest.java:
package com.cn; 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秒后執行此任務,每次間隔2秒執行一次,如果傳遞一個Data參數,就可以在某個固定的時間執行這個任務. while(true){//這個是用來停止此任務的,否則就一直循環執行此任務 try{ int in = System.in.read(); if(in == 's'){ timer.cancel();//使用這個方法退出任務 break; } } catch (IOException e){ // TODO Auto-generated catch block e.printStackTrace(); } } } static class MyTask extends java.util.TimerTask{ public void run(){ System.out.println("________"); } } }
此類運行時:
程序啟動1秒后在控制台打印“————”
間隔兩秒后接着執行MyTask的run()方法,打印“————”
這樣一直循環
當在控制台輸入s字符時,timer定時器取消工作
跳出整個循環
程序運行結束!
Timer類的常用其他方法:
cancel()
終止此計時器,丟棄所有當前已安排的任務。
purge()
從此計時器的任務隊列中移除所有已取消的任務。
schedule(TimerTask task, Date time)
安排在指定的時間執行指定的任務。
TimerTask類的常用其他方法:
cancel()
取消此計時器任務。
run()
此計時器任務要執行的操作。
scheduledExecutionTime()
返回此任務最近實際 執行的已安排 執行時間。
以下是幾種調度task的方法:
1.timer.schedule(task, time); // time為Date類型:在指定時間執行一次。
2.timer.schedule(task, firstTime, period); // firstTime為Date類型,period為long。從firstTime時刻開始,每隔period毫秒執行一次。
3.timer.schedule(task, delay) // delay 為long類型:從現在起過delay毫秒執行一次
4.timer.schedule(task, delay, period) // delay為long,period為long:從現在起過delay毫秒以后,每隔period。毫秒執行一次。