Java定时器Timer
生活随笔
收集整理的這篇文章主要介紹了
Java定时器Timer
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Java定時器Timer
在JDK庫中,Timer類主要負責計劃任務的功能,也就是在指定的時開始執行某一個任務。Timer類的主要作用就是設置計劃任務,但封裝任務的類卻是TimerTask類,執行計劃任務的代碼要放入TimerTask的子類中,因為TimerTask是一個抽象類。下面通過實例說一說,如何實現指定時間執行任務以及實現指定周期執行任務。
在指定時間執行
方法schedule(TimerTask,Date time),該方法的作用是在指定的日期執行一次某一任務。
執行任務類MyTask
場景1:執行任務晚于當前時間--延遲執行
public class Test {public static void main(String[] args) {System.out.println("當前時間為:" + new Date());Calendar calen = Calendar.getInstance();calen.add(Calendar.SECOND,5);Date runDate = calen.getTime();MyTask task = new MyTask();Timer timer = new Timer();timer.schedule(task,runDate);} }執行結果:
Connected to the target VM, address: '127.0.0.1:63242', transport: 'socket'
當前時間為:Wed Nov 14 17:19:53 CST 2018 任務執行了,時間為:Wed Nov 14 17:19:58 CST 2018 Disconnected from the target VM, address: '127.0.0.1:63242', transport: 'socket' Process finished with exit code 0 場景2:執行任務的時間早于當前時間--立即執行 public class Test1 {public static void main(String[] args) {System.out.println("當前時間為:" + new Date());Calendar calen = Calendar.getInstance();calen.add(Calendar.SECOND,-10);Date runDate = calen.getTime();MyTask task = new MyTask();Timer timer = new Timer();timer.schedule(task,runDate);} } 執行結果: Connected to the target VM, address: '127.0.0.1:63249', transport: 'socket' 當前時間為:Wed Nov 14 17:20:58 CST 2018 任務執行了,時間為:Wed Nov 14 17:20:58 CST 2018 Disconnected from the target VM, address: '127.0.0.1:63249', transport: 'socket' Process finished with exit code 0 場景3:Timer中允許有多個TimerTask public class Test2 {public static void main(String[] args) {System.out.println("當前時間為:" + new Date());Calendar calen1 = Calendar.getInstance();calen1.add(Calendar.SECOND,5);Date runDate1 = calen1.getTime();MyTask task1 = new MyTask();Calendar calen2 = Calendar.getInstance();calen2.add(Calendar.SECOND,-10);Date runDate2 = calen2.getTime();MyTask task2 = new MyTask();Timer timer = new Timer();timer.schedule(task1,runDate1);timer.schedule(task2,runDate2);} } 執行結果: Connected to the target VM, address: '127.0.0.1:63292', transport: 'socket' 當前時間為:Wed Nov 14 17:23:02 CST 2018 任務執行了,時間為:Wed Nov 14 17:23:02 CST 2018 任務執行了,時間為:Wed Nov 14 17:23:07 CST 2018 Disconnected from the target VM, address: '127.0.0.1:63292', transport: 'socket' Process finished with exit code 0周期性執行
方法schedule(TimerTask,Date firstTime,long period),改方法的作用是在指定的日期之后按指定的時間間隔周期,無線循環地執行某一任務。 執行類:MyTask1 public class MyTask1 extends TimerTask{@Overridepublic void run() {System.out.println("任務執行了,時間為:" + new Date());} } 測試類:Test3 public class Test3 {public static void main(String[] args) {System.out.println("當前時間為:" + new Date());Calendar calen = Calendar.getInstance();calen.add(Calendar.SECOND,5);Date runDate = calen.getTime();MyTask1 task = new MyTask1();Timer timer = new Timer();timer.schedule(task,runDate,4000);} } 執行結果: Connected to the target VM, address: '127.0.0.1:63382', transport: 'socket' 當前時間為:Wed Nov 14 17:35:36 CST 2018 任務執行了,時間為:Wed Nov 14 17:35:41 CST 2018 任務執行了,時間為:Wed Nov 14 17:35:45 CST 2018 任務執行了,時間為:Wed Nov 14 17:35:49 CST 2018 任務執行了,時間為:Wed Nov 14 17:35:53 CST 2018 任務執行了,時間為:Wed Nov 14 17:35:57 CST 2018 注意: 1)TimerTask類中的cancel()方法的做事是將自身從任務隊列中進行清除 2)Timer類中的cancel()方法的作用是將任務隊列中的全部任務進行清空。轉載于:https://www.cnblogs.com/myxcf/p/9959589.html
總結
以上是生活随笔為你收集整理的Java定时器Timer的全部內容,希望文章能夠幫你解決所遇到的問題。