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