" />

最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java定時任務(wù)schedule和scheduleAtFixedRate的異同

 更新時間:2023年05月11日 15:01:32   作者:趙昕彧  
本文主要介紹了Java定時任務(wù)schedule和scheduleAtFixedRate的異同,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、使用

相同點(diǎn)

  • 任務(wù)執(zhí)行未超時,則下次執(zhí)行時間 = 上次執(zhí)行開始時間 + period
  • 任務(wù)執(zhí)行超時,則下次執(zhí)行時間 = 上次執(zhí)行結(jié)束時間

不同點(diǎn)

  • schedule在錯過以后會按照自己的節(jié)奏繼續(xù)走,可能會導(dǎo)致丟失任務(wù),但時間間隔穩(wěn)定。
  • scheduleAtFixedRate在錯過后,會努力追趕進(jìn)度,以確保保持執(zhí)行頻率的穩(wěn)定。

代碼示例

我們進(jìn)行一個簡單的測試,在下面的代碼中,每3秒就會有一個間隔5秒的線程休眠(模擬超時),對比一下二者輸出數(shù)據(jù)的區(qū)別。

package com;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class TimerTest {
? ? public static void main(String[] args) {
? ? ? ? // 任務(wù)此時已經(jīng)啟動
? ? ? ? Timer t = new Timer();
? ? ? ? TimerTask task = new CustomTimerTask("test");
? ? ? ? // 添加任務(wù)
? ? ? ? /*
? ? ? ? ?* schedule 保持間隔時間的穩(wěn)定
? ? ? ? ?* scheduleAtFixedRate 保持執(zhí)行頻率的穩(wěn)定
? ? ? ? ?*/
? ? ? ? t.schedule(task, new Date(), 2000);
// ? ? ? ?t.scheduleAtFixedRate(task, new Date(), 2000);
? ? }
}
class CustomTimerTask extends TimerTask {
? ? private String name;
? ? int count = 1;
? ? private final SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
? ? public CustomTimerTask(String name) {
? ? ? ? this.name = name;
? ? }
? ? @Override
? ? public void run() {
? ? ? ? try {
? ? ? ? ? ? System.out.println("線程 : " + count);
? ? ? ? ? ? System.out.println("startTime = " + dateFormatter.format(new Date()));
? ? ? ? ? ? if (count % 3 == 0) {
? ? ? ? ? ? ? ? Thread.sleep(5000);
? ? ? ? ? ? }
? ? ? ? ? ? count++;
? ? ? ? ? ? System.out.println("endTime = " + dateFormatter.format(new Date()) + "\r\n");
? ? ? ? } catch (InterruptedException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }
}

 輸出數(shù)據(jù)對比

schedule

線程 : 1
startTime = 2023-02-25 10:20:28
endTime = 2023-02-25 10:20:28

線程 : 2
startTime = 2023-02-25 10:20:30
endTime = 2023-02-25 10:20:30

線程 : 3
startTime = 2023-02-25 10:20:32
endTime = 2023-02-25 10:20:37

線程 : 4
startTime = 2023-02-25 10:20:37
endTime = 2023-02-25 10:20:37

線程 : 5
startTime = 2023-02-25 10:20:39
endTime = 2023-02-25 10:20:39

線程 : 6
startTime = 2023-02-25 10:20:41
endTime = 2023-02-25 10:20:46

線程 : 7
startTime = 2023-02-25 10:20:46
endTime = 2023-02-25 10:20:46

線程 : 8
startTime = 2023-02-25 10:20:48
endTime = 2023-02-25 10:20:48

線程 : 9
startTime = 2023-02-25 10:20:50
endTime = 2023-02-25 10:20:55

線程 : 10
startTime = 2023-02-25 10:20:55
endTime = 2023-02-25 10:20:55

線程 : 11
startTime = 2023-02-25 10:20:57
endTime = 2023-02-25 10:20:57

可以看到,schedule在線程4的位置,它的開始時間是上一個線程的結(jié)束時間,它有在努力追趕,但后續(xù)并沒有把之前落下的線程補(bǔ)回來。

scheduleAtFixedRate

線程 : 1
startTime = 2023-02-25 10:18:59
endTime = 2023-02-25 10:18:59

線程 : 2
startTime = 2023-02-25 10:19:01
endTime = 2023-02-25 10:19:01

線程 : 3
startTime = 2023-02-25 10:19:03
endTime = 2023-02-25 10:19:08

線程 : 4
startTime = 2023-02-25 10:19:08
endTime = 2023-02-25 10:19:08

線程 : 5
startTime = 2023-02-25 10:19:08
endTime = 2023-02-25 10:19:08

線程 : 6
startTime = 2023-02-25 10:19:09
endTime = 2023-02-25 10:19:14

線程 : 7
startTime = 2023-02-25 10:19:14
endTime = 2023-02-25 10:19:14

線程 : 8
startTime = 2023-02-25 10:19:14
endTime = 2023-02-25 10:19:14

線程 : 9
startTime = 2023-02-25 10:19:15
endTime = 2023-02-25 10:19:20

線程 : 10
startTime = 2023-02-25 10:19:20
endTime = 2023-02-25 10:19:20

線程 : 11
startTime = 2023-02-25 10:19:20
endTime = 2023-02-25 10:19:20

同樣是線程4的位置,它的開始時間是上一個線程的結(jié)束時間,并且在其后還有一個線程5,說明scheduleAtFixedRate還是在很努力地加油想把之前落下的線程補(bǔ)回來的。

到此這篇關(guān)于Java定時任務(wù)schedule和scheduleAtFixedRate的異同的文章就介紹到這了,更多相關(guān)Java schedule scheduleAtFixedRate內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MyBatis 多表操作的實(shí)現(xiàn)

    MyBatis 多表操作的實(shí)現(xiàn)

    這篇文章主要介紹了MyBatis 多表操作的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 推薦史上最全的IDEA好用插件

    推薦史上最全的IDEA好用插件

    學(xué)會這些Idea插件敲代碼也是一種享受,分享史上最全的IDEA好用插件,可以幫助我們提高工作開發(fā)效率,對于開發(fā)人員很有幫助,感興趣的朋友開來看看吧
    2021-03-03
  • Java設(shè)計(jì)模式之抽象工廠模式詳解

    Java設(shè)計(jì)模式之抽象工廠模式詳解

    這篇文章主要介紹了Java設(shè)計(jì)模式之抽象工廠模式詳解,抽象工廠是一種為訪問類提供一個創(chuàng)建一組相關(guān)或相互依賴對象的接口,且訪問類無須指定所要產(chǎn)品的具體類就能得到同族的、不同等級的產(chǎn)品的模式結(jié)構(gòu),需要的朋友可以參考下
    2023-09-09
  • Android應(yīng)用開發(fā)之將SQLite和APK一起打包的方法

    Android應(yīng)用開發(fā)之將SQLite和APK一起打包的方法

    這篇文章主要介紹了Android應(yīng)用開發(fā)之將SQLite和APK一起打包的方法,文章時間較早,盡管現(xiàn)在開發(fā)環(huán)境已大都遷移至Android Studio上,但打包原理依然相同,需要的朋友可以參考下
    2015-08-08
  • 在Java的Struts中判斷是否調(diào)用AJAX及用攔截器對其優(yōu)化

    在Java的Struts中判斷是否調(diào)用AJAX及用攔截器對其優(yōu)化

    這篇文章主要介紹了在Java的Struts中判斷是否調(diào)用AJAX及用攔截器對其優(yōu)化的方法,Struts框架是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2016-01-01
  • java中javamail發(fā)送帶附件的郵件實(shí)現(xiàn)方法

    java中javamail發(fā)送帶附件的郵件實(shí)現(xiàn)方法

    這篇文章主要介紹了java中javamail發(fā)送帶附件的郵件實(shí)現(xiàn)方法,較為詳細(xì)的分析了JavaMail發(fā)送郵件的用法,是非常實(shí)用的技巧,需要的朋友可以參考下
    2015-01-01
  • JDBC使用Statement修改數(shù)據(jù)庫

    JDBC使用Statement修改數(shù)據(jù)庫

    這篇文章主要為大家詳細(xì)介紹了JDBC使用Statement修改數(shù)據(jù)庫,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Struts2通過自定義標(biāo)簽實(shí)現(xiàn)權(quán)限控制的方法

    Struts2通過自定義標(biāo)簽實(shí)現(xiàn)權(quán)限控制的方法

    這篇文章主要介紹了Struts2通過自定義標(biāo)簽實(shí)現(xiàn)權(quán)限控制的方法,介紹了定義Struts2的自定義標(biāo)簽的三個步驟以及詳細(xì)解釋,需要的朋友可以參考下。
    2017-09-09
  • Spring boot中filter類不能注入@Autowired變量問題

    Spring boot中filter類不能注入@Autowired變量問題

    這篇文章主要介紹了Spring boot中filter類不能注入@Autowired變量問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java之Rsync并發(fā)遷移數(shù)據(jù)并校驗(yàn)詳解

    Java之Rsync并發(fā)遷移數(shù)據(jù)并校驗(yàn)詳解

    這篇文章主要介紹了Java之Rsync并發(fā)遷移數(shù)據(jù)并校驗(yàn)詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08

最新評論

桂林市| 三原县| 葫芦岛市| 满洲里市| 聊城市| 丁青县| 乐亭县| 临安市| 红原县| 莱西市| 佛坪县| 新绛县| 泸定县| 东阿县| 昌江| 嘉峪关市| 越西县| 石家庄市| 永仁县| 定南县| 乌兰浩特市| 汉沽区| 长顺县| 营山县| 达尔| 德兴市| 吴江市| 中牟县| 读书| 磐安县| 闸北区| 开封市| 鱼台县| 阳春市| 商洛市| 平乡县| 临泉县| 霍林郭勒市| 印江| 和田市| 瑞丽市|