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

Java定時(shí)器通信協(xié)議管理模塊Timer詳解

 更新時(shí)間:2022年08月05日 08:30:46   作者:???????萬(wàn)惡的沫白  
這篇文章主要介紹了Java定時(shí)器通信協(xié)議管理模塊Timer,?Timer一般指定時(shí)器(通信協(xié)議管理模塊)人類最早使用的定時(shí)工具是沙漏或水漏,但在鐘表誕生發(fā)展成熟之后,人們開(kāi)始嘗試使用這種全新的計(jì)時(shí)工具來(lái)改進(jìn)定時(shí)器,達(dá)到準(zhǔn)確控制時(shí)間的目的

Timer詳解

TimerTimerTask用于在后臺(tái)線程中調(diào)度任務(wù)的java.util類。TimerTask負(fù)責(zé)任務(wù)的執(zhí)行,Timer負(fù)責(zé)任務(wù)的調(diào)度。

定時(shí)功能

Timer提供了三種定時(shí)模式:

  • 一次性任務(wù)
  • 按照固定的延遲執(zhí)行(fixed delay)
  • 按照固定的周期執(zhí)行(fixed rate

執(zhí)行一次

Timer提供了兩種方法,應(yīng)用于不同場(chǎng)景:

//在當(dāng)前時(shí)間往后delay個(gè)毫秒開(kāi)始執(zhí)行
public void schedule(TimerTask task, long delay) {...}
//在指定的time時(shí)間點(diǎn)執(zhí)行
public void schedule(TimerTask task, Date time) {...}
public static void main(String[] args) {
    //定義一個(gè)Timer
    Timer timer = new Timer("test-timer");
    //定義一個(gè)TimerTask
    TimerTask task = new TimerTask() {
        @Override
        public void run() {
            System.out.println("任務(wù)執(zhí)行時(shí)間:" + new Date() + "------------"
                               + "線程:" + Thread.currentThread().getName());
        }
    };
    long delay = 3000L;
    timer.schedule(task, delay);
    System.out.println("任務(wù)添加時(shí)間:" + new Date() + "------------"
                       + "線程:" + Thread.currentThread().getName());
}

工作方式:當(dāng)達(dá)到我們指定的時(shí)間,執(zhí)行一次結(jié)束

任務(wù)雖然運(yùn)行結(jié)束,但進(jìn)程沒(méi)有被銷毀。并且執(zhí)行任務(wù)的線程名為我們定義的Timer的名稱。

我們看一下源碼:

public class Timer {
    //小頂堆,用來(lái)存放timeTask
    private final TaskQueue queue = new TaskQueue();
    
    private final TimerThread thread = new TimerThread(queue);
    
    public Timer(String name) {
        thread.setName(name);
        thread.start();
    }
}
public abstract class TimerTask implements Runnable {
    long nextExecutionTime;
    long period = 0;
    public abstract void run();
}
  • TaskQueue:基于小頂堆實(shí)現(xiàn),用來(lái)存放timerTask
  • TimerThread:任務(wù)執(zhí)行線程,繼承Thread
  • nextExecutionTime:假如任務(wù)需要多次執(zhí)行表示下一次執(zhí)行時(shí)間
  • period:每次任務(wù)執(zhí)行間隔時(shí)間
  • run():我們執(zhí)行任務(wù)的內(nèi)容

創(chuàng)建一個(gè) Timer 對(duì)象就是新啟動(dòng)了一個(gè)線程,但是這個(gè)新啟動(dòng)的線程,并不是守護(hù)線程,它一直在后臺(tái)運(yùn)行,通過(guò)如下 可以將新啟動(dòng)的 Timer 線程設(shè)置為守護(hù)線程。我們可以使用以下構(gòu)造方法(public Timer(boolean isDaemon)public Timer(String name, boolean isDaemon))來(lái)設(shè)置。

Fixed Delay模式

//從當(dāng)前時(shí)間開(kāi)始delay個(gè)毫秒數(shù)開(kāi)始定期執(zhí)行,周期是period個(gè)毫秒數(shù)
public void schedule(TimerTask task, long delay, long period) {...}
////從指定的firstTime開(kāi)始定期執(zhí)行,往后每次執(zhí)行的周期是period個(gè)毫秒數(shù)
public void schedule(TimerTask task, Date firstTime, long period){...}

工作方式:

  • 第一次執(zhí)行,按照指定時(shí)間開(kāi)始(如果此時(shí)TimerThread沒(méi)有執(zhí)行其他任務(wù)),如有其他任務(wù)在執(zhí)行,那就需要等到其他任務(wù)執(zhí)行完成才能執(zhí)行
  • 第二次執(zhí)行,每次任務(wù)是上一次任務(wù)開(kāi)始執(zhí)行時(shí)間加上執(zhí)行的period時(shí)間。

到此這篇關(guān)于Java定時(shí)器通信協(xié)議管理模塊Timer詳解的文章就介紹到這了,更多相關(guān)Java Timer內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MyEclipse整合ssh三大框架環(huán)境搭載用戶注冊(cè)源碼下載

    MyEclipse整合ssh三大框架環(huán)境搭載用戶注冊(cè)源碼下載

    這篇文章主要為大家詳細(xì)介紹了如何使用MyEclipse整合ssh三大框架進(jìn)行環(huán)境搭載,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • 使用springboot不自動(dòng)初始化數(shù)據(jù)庫(kù)連接池

    使用springboot不自動(dòng)初始化數(shù)據(jù)庫(kù)連接池

    這篇文章主要介紹了使用springboot不自動(dòng)初始化數(shù)據(jù)庫(kù)連接池,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • spring 整合mybatis后用不上session緩存的原因分析

    spring 整合mybatis后用不上session緩存的原因分析

    因?yàn)橐恢庇胹pring整合了mybatis,所以很少用到mybatis的session緩存。什么原因呢?下面小編給大家介紹spring 整合mybatis后用不上session緩存的原因分析,需要的朋友可以參考下
    2017-02-02
  • 教你怎么用Java數(shù)組和鏈表實(shí)現(xiàn)棧

    教你怎么用Java數(shù)組和鏈表實(shí)現(xiàn)棧

    本篇文章為大家詳細(xì)介紹了怎么用Java數(shù)組和鏈表實(shí)現(xiàn)棧,文中有非常詳細(xì)的代碼示例及注釋,對(duì)正在學(xué)習(xí)java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • idea 模板編程知識(shí)小結(jié)

    idea 模板編程知識(shí)小結(jié)

    這篇文章主要介紹了idea 模板編程的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Windows系統(tǒng)下JDK1.8與JDK11版本切換超詳細(xì)教程

    Windows系統(tǒng)下JDK1.8與JDK11版本切換超詳細(xì)教程

    這篇文章主要給大家介紹了關(guān)于Windows系統(tǒng)下JDK1.8與JDK11版本切換的超詳細(xì)教程,我們可以有多個(gè)工程項(xiàng)目,用的JDK版本不一樣,這個(gè)時(shí)候就需要進(jìn)行自由切換JDK版本了,需要的朋友可以參考下
    2023-07-07
  • VsCode配置java環(huán)境的詳細(xì)圖文教程

    VsCode配置java環(huán)境的詳細(xì)圖文教程

    vscode是一個(gè)免費(fèi)的代碼編輯器,支持多種主題,應(yīng)用起來(lái)簡(jiǎn)單方便,下面這篇文章主要給大家介紹了關(guān)于VsCode配置java環(huán)境的詳細(xì)圖文教程,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • springboot連接sqllite遇到的坑及解決

    springboot連接sqllite遇到的坑及解決

    這篇文章主要介紹了springboot連接sqllite遇到的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • java類的組成結(jié)構(gòu)詳解

    java類的組成結(jié)構(gòu)詳解

    大家好,本篇文章主要講的是java類的組成結(jié)構(gòu)詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Spring Task定時(shí)任務(wù)的配置和使用詳解

    Spring Task定時(shí)任務(wù)的配置和使用詳解

    本篇文章主要介紹了Spring Task定時(shí)任務(wù)的配置和使用詳解,實(shí)例分析了Spring Task定時(shí)任務(wù)的配置和使用的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-04-04

最新評(píng)論

宣威市| 衡南县| 平舆县| 雅安市| 巫山县| 彭泽县| 盖州市| 法库县| 屏山县| 安义县| 景洪市| 吉水县| 区。| 自治县| 麻栗坡县| 定西市| 洪泽县| 确山县| 东兴市| 建始县| 得荣县| 五寨县| 观塘区| 霸州市| 万载县| 凌海市| 尉犁县| 肥乡县| 东乡族自治县| 通辽市| 揭东县| 嘉祥县| 辉县市| 寿宁县| 宁陕县| 上林县| 平陆县| 南江县| 霍邱县| 大荔县| 江陵县|