Timer和TimerTask 定時器和定時任務


這兩個類使用起來非常方便,可以完成我們對定時器的絕大多數需求 

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。毫秒執行一次。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM