java中timer的schedule和scheduleAtFixedRate方法區(qū)別詳解
timer的schedule和scheduleAtFixedRate方法一般情況下是沒什么區(qū)別的,只在某個(gè)情況出現(xiàn)時(shí)會(huì)有區(qū)別--當(dāng)前任務(wù)沒有來得及完成下次任務(wù)又交到手上。
我們來舉個(gè)例子:
暑假到了老師給schedule和scheduleAtFixedRate兩個(gè)同學(xué)布置作業(yè)。
老師要求學(xué)生暑假每天寫2頁,30天后完成作業(yè)。
這兩個(gè)學(xué)生每天按時(shí)完成作業(yè),直到第10天,出了意外,兩個(gè)學(xué)生出去旅游花了5天時(shí)間,這5天時(shí)間里兩個(gè)人都沒有做作業(yè)。任務(wù)被拖延了。
這時(shí)候兩個(gè)學(xué)生采取的策略就不同了:
schedule重新安排了任務(wù)時(shí)間,旅游回來的第一天做第11天的任務(wù),第二天做第12天的任務(wù),最后完成任務(wù)花了35天。
scheduleAtFixedRate是個(gè)守時(shí)的學(xué)生,她總想按時(shí)完成老師的任務(wù),于是在旅游回來的第一天把之前5天欠下的任務(wù)以及第16天當(dāng)天的任務(wù)全部完成了,之后還是按照老師的原安排完成作業(yè),最后完成任務(wù)花了30天。
package day01; import java.text.SimpleDateFormat; import java.util.Timer; import java.util.TimerTask; public class Test01 { public static void main(String[] args) { final Timer timer = new Timer(); //timer.scheduleAtFixedRate(new TimerTask() { timer.schedule(new TimerTask() {//分別注釋這行和上面這行試一試效果 int count = 1; @Override public void run() { count++; if (count == 10) { try { Thread.sleep(5000); } catch (InterruptedException e) { System.out.println("延遲5s"); e.printStackTrace(); } } SimpleDateFormat sf = new SimpleDateFormat( "yyyy MM dd hh:mm:ss"); System.out.println("當(dāng)前時(shí)間:" + sf.format(System.currentTimeMillis()) + "計(jì)劃時(shí)間:" + sf.format(scheduledExecutionTime())); } }, 1000, 1000); } }
希望能幫到大家!
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
MyBatis使用級聯(lián)操作解決lombok構(gòu)造方法識別失敗問題
這篇文章主要介紹了MyBatis使用級聯(lián)操作解決lombok構(gòu)造方法識別失敗問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07IntelliJ IDEA 2020最新激活碼(親測有效,可激活至 2089 年
這篇文章主要介紹了IntelliJ IDEA 2021最新激活碼(親測有效,可激活至 2089 年),非常不錯(cuò),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04自定義application.yml配置項(xiàng)方式
這篇文章主要介紹了自定義application.yml配置項(xiàng)方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07利用SpringBoot解決多個(gè)定時(shí)任務(wù)阻塞的問題
當(dāng)我們在Spring Boot應(yīng)用中使用多個(gè)定時(shí)任務(wù)時(shí),任務(wù)之間的阻塞可能是一個(gè)常見的問題,這可能會(huì)因任務(wù)之間的依賴、執(zhí)行時(shí)間過長或資源爭用等原因而發(fā)生,本文讓我們深入探討如何利用Spring Boot來解決多個(gè)定時(shí)任務(wù)阻塞的問題,感興趣的小伙伴跟著小編一起來看看吧2024-01-01三道java新手入門面試題,通往自由的道路--鎖+Volatile
這篇文章主要為大家分享了最有價(jià)值的3道多線程面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,對hashCode方法的設(shè)計(jì)、垃圾收集的堆和代進(jìn)行剖析,感興趣的小伙伴們可以參考一下2021-07-07JMeter中的后端監(jiān)聽器的實(shí)現(xiàn)
本文主要介紹了JMeter中的后端監(jiān)聽器的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09Java?easyExcel的復(fù)雜表頭多級表頭導(dǎo)入
最近在項(xiàng)目開發(fā)中遇到的一個(gè)excel復(fù)雜表頭的導(dǎo)入數(shù)據(jù)庫操作,下面這篇文章主要給大家介紹了關(guān)于Java?easyExcel的復(fù)雜表頭多級表頭導(dǎo)入的相關(guān)資料,需要的朋友可以參考下2022-06-06SpringBoot 監(jiān)控管理模塊actuator沒有權(quán)限的問題解決方法
這篇文章主要介紹了SpringBoot 監(jiān)控管理模塊actuator沒有權(quán)限的問題解決方法,需要的朋友可以參考下2017-12-12Spring Boot 2.4版本前后的分組配置變化及對多環(huán)境配置結(jié)構(gòu)的影響(推薦)
這篇文章主要介紹了Spring Boot 2.4版本前后的分組配置變化及對多環(huán)境配置結(jié)構(gòu)的影響,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12