欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java通過Timer與TimerTask實現(xiàn)定時任務(wù)調(diào)度方式

 更新時間:2024年12月23日 12:43:59   作者:灰太狼RD  
本文介紹了如何在Java中使用`Timer`和`TimerTask`類來實現(xiàn)定時任務(wù)調(diào)度,`Timer`類用于創(chuàng)建計時器并安排任務(wù),而`TimerTask`類用于定義具體的任務(wù),文章詳細(xì)介紹了這兩個類的方法和使用示例,包括創(chuàng)建任務(wù)、安排任務(wù)、取消任務(wù)等操作,通過一個簡單的例子

前言

在實際的工作當(dāng)中,經(jīng)常要用到定時去操作一下任務(wù),例如:數(shù)據(jù)的定時備份,用戶的定時短信發(fā)送,定時刷新緩存等等。下面介紹實現(xiàn)的兩個基礎(chǔ)工具類Timer與TimerTask。

提示:以下是本篇文章正文內(nèi)容,下面案例可供參考

一、什么Timer類

1、Timer類是一種線程設(shè)施,可以用來實現(xiàn)在某一個時間或某一段時間后安排某一個任務(wù)執(zhí)行一次或定期重復(fù)執(zhí)行。 

2、該功能要與TimerTask類配合使用,TimerTask類是用來實現(xiàn)由Timer創(chuàng)建的一次或者重復(fù)執(zhí)行的某一個任務(wù)。 

3、每一個Timer對象對應(yīng)一個線程,因此定時計數(shù)器所執(zhí)行的任務(wù)應(yīng)該迅速完成,否則可能會延遲后續(xù)任務(wù)的執(zhí)行,而這寫后續(xù)的任務(wù)就有可能堆在一起,等到任務(wù)執(zhí)行完成之后才能快速連續(xù)執(zhí)行。

Timer類常用的方法

方法描述
public Timer()創(chuàng)建一個計時器并啟動該計時器
public void cancel()用來終止該計時器,并放棄所有己安排的任務(wù),對當(dāng)前正在執(zhí)行的任務(wù)沒有影響
public int purge()將所有己經(jīng)取消的任務(wù)刪除,一般用來釋放內(nèi)存空間
public void schedule(TimerTask task, Date time)安排一個任務(wù)在指定的時間執(zhí)行,如果己經(jīng)超過該時間,則立即執(zhí)行
public void schedule(TimerTask task, Date firstTime, long period)安排一個任務(wù)在指定的時間執(zhí)行,然后以固定的頻率(單位:ms)重復(fù)執(zhí)行
public void schedule(TimerTask task, long delay)安排一個任務(wù)在一段時間(單位:ms)后執(zhí)行
public void schedule(TimerTask task, long delay, long period)安排一個任務(wù)在一段時間(單位:ms)后執(zhí)行,然后以固定的頻率 (單位:ms)重復(fù)執(zhí)行
public void scheduleAtFixedRate(TimerTask task, Date firstTime, long period)安排一個任務(wù)在指定的時間執(zhí)行,然后以近似固定的頻率 (單位:ms) 重復(fù)執(zhí)行
public void scheduleAtFixedRate(TimerTask task, long delay, long period)安排一個任務(wù)在一段時間(單位:ms)后普通執(zhí)行,然后以近似固定的頻率 (單位:毫秒)重復(fù)執(zhí)行

備注:在這里需要說明的是:schedule()與scheduleAtrixedRare()方法的區(qū)別在于重復(fù)執(zhí)行任務(wù)時對于時間間隔出現(xiàn)延遲的情況處理:

(1)、schedule()方法的執(zhí)行時間間隔水遠(yuǎn)是固定的,如果之前出現(xiàn)了延遲的情況,之后也會繼續(xù)按照設(shè)定好的時間間隔來執(zhí)行。

(2)、scheduleAtrixedRare()方法可以根據(jù)出現(xiàn)的延時時間自動調(diào)整下一次間隔的執(zhí)行時間。

二、什么TimerTask類

要想執(zhí)行具體的定時任務(wù),就要必須使用TimerTask類,TimerTask類是一個抽象類,使用的時候需要繼承該類,并實現(xiàn)抽象房方法。

TimerTask類常用的方法,以及實現(xiàn)接口的順序圖

方法描述
public boolean cancel()用來終止該計時器,并放棄所有己安排的任務(wù),對當(dāng)前正在執(zhí)行的任務(wù)沒有影響
public abstract void run()該任務(wù)所要執(zhí)行的具體操作,該方法為引入的接口 Runnable 中的方法,子類需要覆寫此方法
public long scheduledExecutionTime()返回最近一次要執(zhí)行該任務(wù)的時間(如果正在執(zhí)行,則返回此任務(wù)的執(zhí)行安排時間),一般在run()方法中調(diào)用,用來判斷當(dāng)前是否有足夠的時問來執(zhí)行完成該任務(wù)

三、代碼實現(xiàn)定時調(diào)度

1.創(chuàng)建DuTask類

繼承TimerTask類,實現(xiàn)調(diào)度的能力,用于執(zhí)行業(yè)務(wù)邏輯

/**
 * @author   zhx
 * @date 2021-12-19
 */
public class DuTask extends TimerTask {
    @Override
    public void run() {
        SimpleDateFormat sDate=null;
        sDate=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
        System.out.println("當(dāng)前時間執(zhí)行任務(wù)的時間為:"+sDate.format(new Date()));
    }
}

2.創(chuàng)建測試TestDuTask類

進(jìn)行任務(wù)調(diào)度

/**
 * @author   zhx
 * @date 2021-12-19
 */
public class TestDuTask {
    public static void main(String[] args) {
        Timer timer = new Timer();//創(chuàng)建Timer類對象
        DuTask task = new DuTask();//定時任務(wù)
        //設(shè)置定時任務(wù)執(zhí)行:  1秒后開始,每3秒重復(fù)執(zhí)行
        timer.schedule(task,1000,3000);
    }
}

驗證效果截圖

間隔3秒執(zhí)行的

總結(jié)

當(dāng)然這執(zhí)行我們在實際開過程中實現(xiàn)任務(wù)調(diào)度的方法之一,后續(xù)我將講解第二種方式JobDetail實現(xiàn)定時任務(wù)調(diào)度。

相關(guān)文章

  • Java描述數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)之鏈表的增刪改查詳解

    Java描述數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)之鏈表的增刪改查詳解

    這篇文章主要給大家介紹了關(guān)于Java描述數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)之鏈表的增刪改查的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • java 刪除文件夾中的所有內(nèi)容而不刪除文件夾本身的實例

    java 刪除文件夾中的所有內(nèi)容而不刪除文件夾本身的實例

    下面小編就為大家?guī)硪黄猨ava 刪除文件夾中的所有內(nèi)容而不刪除文件夾本身的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • java使用正則表達(dá)為數(shù)字添加千位符的簡單方法

    java使用正則表達(dá)為數(shù)字添加千位符的簡單方法

    這篇文章主要介紹了java使用正則表達(dá)為數(shù)字添加千位符的簡單方法,需要的朋友可以參考下
    2014-04-04
  • Java?如何接收kernel傳過來的數(shù)組(推薦)

    Java?如何接收kernel傳過來的數(shù)組(推薦)

    這篇文章主要介紹了Java?如何接收kernel傳過來的數(shù)組,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-08-08
  • Java 深入淺出掌握Collection單列集合Set

    Java 深入淺出掌握Collection單列集合Set

    Collection集合類是單列集合類的根接口,用來存儲一系列符合某種規(guī)則的元素。List接口和Set接口是Collection集合類的子接口,其中List接口的常用實現(xiàn)類有ArrayList類、Vector類和LinkedList類;Set接口的常用實現(xiàn)類有HashSet類和TreeSet類
    2021-11-11
  • IntelliJ IDEA查看方法說明文檔的圖解

    IntelliJ IDEA查看方法說明文檔的圖解

    今天小編就為大家分享一篇關(guān)于IntelliJ IDEA查看方法說明文檔的圖解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • 淺談Strut2如何對請求參數(shù)的封裝

    淺談Strut2如何對請求參數(shù)的封裝

    這篇文章主要介紹了淺談Strut2如何對請求參數(shù)的封裝,具有一定借鑒價值,需要的朋友可以參考下
    2017-12-12
  • 最常用的1000個Java類(附代碼示例)

    最常用的1000個Java類(附代碼示例)

    這篇文章主要介紹了最常用的1000個Java類(附代碼示例),需要的朋友可以參考下
    2015-04-04
  • Java Session驗證碼案例代碼實例解析

    Java Session驗證碼案例代碼實例解析

    這篇文章主要介紹了Java Session驗證碼案例代碼實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • 詳解maven中央倉庫連不上的解決辦法

    詳解maven中央倉庫連不上的解決辦法

    這篇文章主要介紹了詳解maven中央倉庫連不上的解決辦法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09

最新評論