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

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)文章

  • 基于Log4j2阻塞業(yè)務(wù)線程引發(fā)的思考

    基于Log4j2阻塞業(yè)務(wù)線程引發(fā)的思考

    這篇文章主要介紹了基于Log4j2阻塞業(yè)務(wù)線程引發(fā)的思考,基于很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • SpringMVC通過注解實現(xiàn)全局異常處理問題小結(jié)

    SpringMVC通過注解實現(xiàn)全局異常處理問題小結(jié)

    文章介紹SpringMVC全局異常處理機(jī)制,通過@ControllerAdvice和@ExceptionHandler注解實現(xiàn)統(tǒng)一異常處理,提升代碼可維護(hù)性與響應(yīng)一致性,減少重復(fù)try-catch代碼,增強(qiáng)系統(tǒng)健壯性,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2025-09-09
  • java刪除指定目錄下指定格式文件的方法

    java刪除指定目錄下指定格式文件的方法

    這篇文章主要為大家詳細(xì)介紹了java刪除指定目錄下指定格式文件的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • java web實現(xiàn)郵箱激活與忘記密碼

    java web實現(xiàn)郵箱激活與忘記密碼

    這篇文章主要為大家詳細(xì)介紹了java web實現(xiàn)郵箱激活與忘記密碼、重置密碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • Java報錯org.hibernate.TypeMismatchException的解決方法

    Java報錯org.hibernate.TypeMismatchException的解決方法

    在Java開發(fā)領(lǐng)域,尤其是涉及到數(shù)據(jù)持久化的項目中,Hibernate是一款廣泛使用的強(qiáng)大工具,然而,可能會在使用過程中遭遇各種報錯,其中org.hibernate.TypeMismatchException就是一個讓人頭疼的問題,下面我們一起深入剖析這個報錯信息
    2024-11-11
  • Java Volatile應(yīng)用單例模式實現(xiàn)過程解析

    Java Volatile應(yīng)用單例模式實現(xiàn)過程解析

    這篇文章主要介紹了Java Volatile應(yīng)用單例模式實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • Java并發(fā)編程中的Callable、Future和FutureTask詳解

    Java并發(fā)編程中的Callable、Future和FutureTask詳解

    這篇文章主要介紹了Java并發(fā)編程中的Callable、Future和FutureTask詳解,創(chuàng)建線程的2種方式,一種是直接繼承Thread,另外一種就是實現(xiàn)Runnable接口,這2種方式都有一個缺陷就是:在執(zhí)行完任務(wù)之后無法獲取執(zhí)行結(jié)果,需要的朋友可以參考下
    2023-07-07
  • 使用@EnableWebMvc輕松配置Spring MVC

    使用@EnableWebMvc輕松配置Spring MVC

    這篇文章主要為大家介紹了使用@EnableWebMvc輕松配置Spring MVC實現(xiàn)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • 使用Java8中Optional機(jī)制的正確姿勢

    使用Java8中Optional機(jī)制的正確姿勢

    我們知道 Java 8 增加了一些很有用的 API, 其中一個就是 Optional,下面這篇文章主要給大家介紹了關(guān)于如何正確使用Java8中Optional機(jī)制的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-11-11
  • java中l(wèi)ong和Long有什么區(qū)別詳解

    java中l(wèi)ong和Long有什么區(qū)別詳解

    這篇文章主要介紹了Java中l(wèi)ong和Long是基本數(shù)據(jù)類型和包裝數(shù)據(jù)類型的區(qū)別,包括默認(rèn)值、內(nèi)存占用、使用場景、方法支持以及裝箱和拆箱,包裝數(shù)據(jù)類型如Integer提供了許多有用的方法,需要的朋友可以參考下
    2025-02-02

最新評論

道孚县| 秀山| 织金县| 莲花县| 六盘水市| 博白县| 库伦旗| 张北县| 临桂县| 当阳市| 晋中市| 平定县| 丰台区| 胶州市| 柯坪县| 永康市| 彭泽县| 宁安市| 巴楚县| 永胜县| 安福县| 青川县| 繁峙县| 临澧县| 保山市| 老河口市| 静安区| 太白县| 新疆| 沽源县| 河西区| 静宁县| 和硕县| 阜新| 南涧| 北海市| 日土县| 汾阳市| 南投市| 梧州市| 巫溪县|