1. 程式人生 > >Timer定時器的 schedule()方法

Timer定時器的 schedule()方法

timer.schedule(new MyTask(),long time1,long timer2);

今天算是徹底的搞懂了這個曾經讓我為之頭疼的方法。下面我就重點介紹一下:

第一個引數,是 TimerTask 類,在包:import java.util.TimerTask .使用者要繼承該類,並實現public void run() 方法,因為 TimerTask 類 實現了 Runnable 介面。

第二個引數的意思是,當你呼叫該方法後,該方法必然會呼叫 TimerTask 類 TimerTask 類 中的 run()方法,這個引數就是這兩者之間的差值,轉換成漢語的意思就是說,使用者呼叫 schedule() 方法後,要等待這麼長的時間才可以第一次執行run() 方法。

第三個引數的意思就是,第一次呼叫之後,從第二次開始每隔多長的時間呼叫一次 run() 方法。

[附:]

     仔細研讀java api,發現:

  schedule(TimerTask task, long delay)的註釋:Schedules thespecified task for execution after the specifieddelay。大意是在延時delay毫秒後執行task。並沒有提到重複執行

  schedule(TimerTask task, long delay, long period)的註釋:Schedulesthe specified task for repeated fixed-delay execution, beginningafter the specified delay。大意是在延時delay毫秒後重復的執行task,週期是period毫秒。

  這樣問題就很明確

       schedule(TimerTask task, longdelay)只執行一次

      schedule(TimerTask task, long delay, longperiod)才是重複的執行

      關鍵的問題在於我們都誤以為schedule就是重複的執行,而沒有仔細的研究API,一方面也是英文能力不夠,瀏覽API的過程中不能很快的理解到含義。