您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關什么是Timer,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
Timer類是Java提供線程用于定時任務調用的工具類。
Timer類是線程安全的。
Timer類使用二進制堆數據結構來存儲任務。
Timer類構造函數
Timer():創建一個新的計時器
Timer(boolean isDaemon):創建一個新的計時器,可以指定其關聯的線程作為守護程序運行
Timer(String name):創建一個新的計時器,其關聯的線程具有指定的名稱
Timer(String name,boolean isDaemon):創建一個新的計時器,其關聯的線程具有指定的名稱,并且可以指定作為守護程序運行
Timer類的方法
cancel():終止此計時器,丟棄當前計劃的任何任務。不會干擾當前正在執行的任務(如果存在)。一旦計時器終止,它的執行線程就會正常終止,并且不再可以在其上安排任務。
purge(): 從此計時器的任務隊列中刪除所有已取消的任務。
schedule(TimerTask task, Date time):計劃在指定時間執行的指定任務。其中task表示要安排的任務,time表示執行任務的時間。
schedule(TimerTask task, Date firstTime, long period):從指定的時間開始,為重復的固定延遲執行安排指定的任務。其中firstTime第一次執行任務的時間,period表示連續任務執行之間的時間(以毫秒為單位)
schedule(TimerTask task, long delay):在指定的延遲語法后調度指定的任務執行。其中delay表示執行任務前的延遲(以毫秒為單位)。
schedule(TimerTask task, long delay, long period):在指定的延遲語法后開始,為重復的固定延遲執行安排指定的任務。
scheduleAtFixedRate(TimerTask task,Date firstTime,long period):從指定時間開始,為重復的固定速率執行調度指定的任務。
scheduleAtFixedRate(TimerTask task, long delay, long period):在指定的延遲語法后開始,為重復的固定速率執行調度指定的任務。
schedule()和scheduleAtFixedRate()區別
相同點
1、方法schedule 和方法 scheduleAtFixedRate 都會按順序執行,所以不用考慮非線程安全的情況。
2、方法schedule 和方法 scheduleAtFixedRate 如果執行任務的時間沒有被延遲,那么下一次任務的執行時間參考的是上一次的任務的"開始"時的時間來計算的。
3、方法schedule 和方法 scheduleAtFixedRate 如果執行任務的時間被延遲了,那么下一次任務的執行時間參考的是上一次任務"結束"時的時間來計算。
不同點
schedule 和 scheduleAtFixedRate在使用上基本沒什么差別,scheduleAtFixedRate 具有追趕執行性,如果任務在周期性運行過程中被打斷了,scheduleAtFixedRate會嘗試把之前落下的任務補上運行。而schedule就不管了,接著運行接下來的任務就行了。
如何理解schedule和scheduleAtFixedRate的案例
暑假到了老師給schedule和scheduleAtFixedRate兩個同學布置作業,老師要求學生暑假每天寫2頁,30天后完成作業。這兩個學生每天按時完成作業,直到第10天,出了意外,兩個學生出去旅游花了5天時間,這5天時間里兩個人都沒有做作業。任務被拖延了。這時候兩個學生采取的策略就不同了:
schedule重新安排了任務時間,旅游回來的第一天做第11天的任務,第二天做第12天的任務,最后完成任務花了35天。
scheduleAtFixedRate是個守時的學生,她總想按時完成老師的任務,于是在旅游回來的第一天把之前5天欠下的任務以及第16天當天的任務全部完成了,之后還是按照老師的原安排完成作業,最后完成任務花了30天。
以上就是什么是Timer,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。