Java中Timer的schedule()方法參數(shù)詳解
timer.schedule(new MyTask(),long time1,long timer2);
今天算是徹底的搞懂了這個曾經(jīng)讓我為之頭疼的方法。下面我就重點介紹一下:
- 第一個參數(shù),是 TimerTask 類,在包:import Java.util.TimerTask .使用者要繼承該類,并實現(xiàn)public void run() 方法,因為 TimerTask 類 實現(xiàn)了 Runnable 接口。
- 第二個參數(shù)的意思是,當你調用該方法后,該方法必然會調用 TimerTask 類 TimerTask 類 中的 run()方法,這個參數(shù)就是這兩者之間的差值,轉換成漢語的意思就是說,用戶調用 schedule() 方法后,要等待這么長的時間才可以第一次執(zhí)行run() 方法。
- 第三個參數(shù)的意思就是,第一次調用之后,從第二次開始每隔多長的時間調用一次 run() 方法。
附:
技術人員在實現(xiàn)內部辦公系統(tǒng)與外部網(wǎng)站一體化的時候,最重要的步驟就是從OA系統(tǒng)讀取數(shù)據(jù),并且根據(jù)網(wǎng)站模板生成最終的靜態(tài)頁面。這里就需要一個定時任務,循環(huán)的執(zhí)行。
技術人員在寫定時任務的時候,想當然的以為Timer.schedule(TimerTask task, longdelay)就是重復的執(zhí)行task。程序運行后發(fā)現(xiàn)只運行了一次,總覺得是task里的代碼有問題,花了很長時間調試代碼都沒有結果。
仔細研讀java api,發(fā)現(xiàn):
schedule(TimerTask task, long delay)的注釋:Schedules thespecified task for execution after the specifieddelay。大意是在延時delay毫秒后執(zhí)行task。并沒有提到重復執(zhí)行
schedule(TimerTask task, long delay, long period)的注釋:Schedulesthe specified task for repeated fixed-delay execution, beginningafter the specified delay。大意是在延時delay毫秒后重復的執(zhí)行task,周期是period毫秒。
這樣問題就很明確schedule(TimerTask task, longdelay)只執(zhí)行一次,schedule(TimerTask task, long delay, longperiod)才是重復的執(zhí)行。關鍵的問題在于程序員誤以為schedule就是重復的執(zhí)行,而沒有仔細的研究API,一方面也是英文能力不夠,瀏覽API的過程中不能很快的理解到含義。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接
相關文章
Spring切面優(yōu)先級與基于xml的AOP實現(xiàn)方法詳解
這篇文章主要介紹了Spring切面的優(yōu)先級與基于xml的AOP的詳細步驟,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-11-11
tk.mybatis通用插件updateByPrimaryKeySelective無法自動更新列的解決辦法
tk.mybatis是一個很好用的通用插件,本文主要介紹了tk.mybatis通用插件updateByPrimaryKeySelective無法自動更新列的解決辦法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12

