使用Timer执行定时任务
一、Timer概述
在Java開發中,會碰到一些需要定時或者延時執行某些任務的需求,這時,我們可以使用Java中的Timer類實現。
二、Timer介紹
Timer是一個定時器類,通過該類可以為指定的定時任務進行配置,所在jar包路徑:java.util.TimerTimer定時器實例有多種構造方法:Timer()// 創建一個新計時器Timer(boolean isDaemon)//創建一個新計時器,可以指定其相關的線程作為守護程序運行Timer(String name)//創建一個新計時器,其相關的線程具有指定的名稱Timer(String name,boolean isDaemon)//創建一個新計時器,其相關的線程具有指定的名稱,并且可以指定作為守護程序運行TimerTask類是一個定時任務類,該類實現了Runnable接口,而且是一個抽象類,所在jar包路徑:java.util.TimerTask// 可以通過繼承該類,來實現自己的定時任務。publicabstractclassTimerTaskimplementsRunnable
三、Timer常用方法
在特定時間執行任務,只執行一次publicvoidschedule(TimerTasktask,Datetime)
在特定時間之后執行任務,只執行一次publicvoidschedule(TimerTasktask,longdelay)
指定第一次執行的時間,然后按照間隔時間,重復執行publicvoidschedule(TimerTasktask,DatefirstTime,longperiod)
在特定延遲之后第一次執行,然后按照間隔時間,重復執行
publicvoid schedule(TimerTask task,long delay,long period)/*參數說明
delay: 延遲執行的毫秒數,即在delay毫秒之后第一次執行
period:重復執行的時間間隔
*/
第一次執行之后,特定頻率執行,與3效果相同
publicvoid scheduleAtFixedRate(TimerTask task,Date firstTime,long period)
在delay毫秒之后第一次執行,后按照特定頻率執行
publicvoid scheduleAtFixedRate(TimerTask task,long delay,long period)
Timer注銷
timer.cancel();
schedule()和scheduleAtFixedRate()的區別
schedule()方法更注重保持間隔時間的穩定:保障每隔period時間可調用一次scheduleAtFixedRate()方法更注重保持執行頻率的穩定:保障多次調用的頻率趨近于period時間,如果任務執行時間大于period,會在任務執行之后馬上執行下一次任務
四、Timer使用示例
使用Timer每隔2秒打印一次數據,并且任務在Timer啟動1秒之后開始
import java.util.Timer;import java.util.TimerTask;publicclassTestTimer{publicstaticvoid main(String[] args){Timer timer =newTimer();
timer.schedule(newMyTask(),1000,2000);}}classMyTaskextendsTimerTask{@Overridepublicvoid run(){System.out.println("每隔2秒我就出現一次……");}}
使用Timer每隔一段時間隨機生成數字
import java.util.Timer;import java.util.Random;import java.util.TimerTask;publicclassTimerTest{publicstaticvoid main(String[] args){Timer timer =newTimer();NewTimerTask timerTask =newNewTimerTask();//程序運行后立刻執行任務,每隔100ms執行一次
timer.schedule(timerTask,0,100);}}classNewTimerTaskextendsTimerTask{@Overridepublicvoid run(){
createRandomNumber();
createRandomNumberFromMathRandom();}//用純Math中的方法來隨機生成1-10之間的隨機數privatevoid createRandomNumberFromMathRandom(){int j =(int)(Math.round(Math.random()*10+1));System.out.println("隨機生成的數字為:"+j);}//用Random類的方式來隨機生成1-10之間的隨機數privatevoid createRandomNumber(){Random random =newRandom(System.currentTimeMillis());int value = random.nextInt();
value =Math.abs(value);
value = value%10+1;System.out.println("新生成的數字為:"+ value);}}
五、小結
通過上面的兩個簡單示例,我們可以很清楚的知道Timer的用法:
實現TimerTask接口,并即為單元任務,我們的單次運行業務邏輯寫在這里面
實例化一個Timer對象,用于啟動TimerTask任務,并通過調用不同的方法設置任務的執行時間、頻率
在實際的應用中,Timer多用于在夜間處理比較耗時并且數據狀態穩定時候的一些后臺操作,例如數據統計、數據備份等。
總結
以上是生活随笔為你收集整理的使用Timer执行定时任务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cmosfixr插件怎么用_3dmax插
- 下一篇: 覆盖政企需求,华为七大终端商用产品解读