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

SpringBoot自定義定時(shí)任務(wù)的實(shí)現(xiàn)示例

 更新時(shí)間:2024年05月11日 08:31:54   作者:銀氨溶液  
本文主要介紹了SpringBoot自定義定時(shí)任務(wù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

通常,在我們的項(xiàng)目中需要定時(shí)給前臺(tái)發(fā)送一些提示性消息或者我們想要的定時(shí)信息,這個(gè)時(shí)候就需要使用定時(shí)任務(wù)來(lái)實(shí)現(xiàn)這一功能,實(shí)現(xiàn)也很簡(jiǎn)單,接下來(lái)具體來(lái)看看吧~

簡(jiǎn)單定時(shí)任務(wù)

首先,你需要在你的啟動(dòng)類上加上開啟定時(shí)任務(wù)的注解

然后,就可以開始編寫一個(gè)簡(jiǎn)單的自定義定時(shí)任務(wù)的邏輯

@Component
public class ScheduleConfig {
    @Scheduled(cron = "*/5 * * * * ?")
    public void printNowTime(){
            System.out.println("固定定時(shí)任務(wù)執(zhí)行:--->"+ LocalDateTime.now()+",此任務(wù)為五秒執(zhí)行一次");
    }
}

以上的代碼邏輯為每五秒打印出當(dāng)前的時(shí)間,控制臺(tái)打印結(jié)果:

@Scheduled除過(guò)cron還有三種方式:fixedRate,fixedDelay,initialDelay

cron:表達(dá)式可以定制化執(zhí)行任務(wù),但是執(zhí)行的方式是與fixedDelay相近的,也是會(huì)按照上一次方法結(jié)束時(shí)間開始算起。

fixedRate:在每次任務(wù)完成后等待一定的時(shí)間再進(jìn)行下一次執(zhí)行,指定連續(xù)執(zhí)行之間的延遲時(shí)間。

initialDelay:initialDelay = 10000 表示在容器啟動(dòng)后,延遲10秒后再執(zhí)行一次定時(shí)器。

fixedDelay:是按照一定的速率執(zhí)行,是從上一次方法執(zhí)行開始的時(shí)間算起,如果上一次方法阻塞住了,下一次也是不會(huì)執(zhí)行,但是在阻塞這段時(shí)間內(nèi)累計(jì)應(yīng)該執(zhí)行的次數(shù),當(dāng)不再阻塞時(shí),一下子把這些全部執(zhí)行掉,而后再按照固定速率繼續(xù)執(zhí)行。

因此,需要注意fixedRate與fixedDelay的區(qū)別fixedRate是基于任務(wù)開始執(zhí)行的時(shí)間點(diǎn)來(lái)計(jì)算下一次任務(wù)開始執(zhí)行的時(shí)間,因此任務(wù)的執(zhí)行時(shí)間間隔是相對(duì)固定的,不受到任務(wù)執(zhí)行時(shí)間的影響。如果指定的時(shí)間間隔小于任務(wù)執(zhí)行的實(shí)際時(shí)間,則任務(wù)可能會(huì)并發(fā)執(zhí)行。而fixedDelay是基于任務(wù)執(zhí)行完成的時(shí)間點(diǎn)來(lái)計(jì)算下一次任務(wù)開始執(zhí)行的時(shí)間,因此任務(wù)的執(zhí)行時(shí)間間隔是相對(duì)不規(guī)則的,受到任務(wù)執(zhí)行時(shí)間的影響.

cron表達(dá)式

cron表達(dá)式是一個(gè)字符串,分為6或7個(gè)域,每?jī)蓚€(gè)域之間用空格分隔,

其語(yǔ)法格式為:"秒域 分域 時(shí)域 日域 月域 周域 年域"

取值范圍

常例

但是,你會(huì)發(fā)現(xiàn)以上的方式雖然也能實(shí)現(xiàn)定時(shí)任務(wù),缺點(diǎn)是當(dāng)我們調(diào)整了執(zhí)行周期的時(shí)候,需要重啟應(yīng)用才能生效,這多少有些不方便。為了達(dá)到實(shí)時(shí)生效的效果,那么可以使用接口來(lái)完成定時(shí)任務(wù),統(tǒng)一將定時(shí)器信息存放在數(shù)據(jù)庫(kù)中。

基于接口的方式

以下是對(duì)應(yīng)數(shù)據(jù)表信息

 使用mybatis-plus實(shí)現(xiàn)cron表的mapper、service接口、serviceimpl實(shí)現(xiàn)類

接下來(lái)實(shí)現(xiàn)自定義定時(shí)任務(wù),通過(guò)從數(shù)據(jù)庫(kù)中獲取cron表達(dá)式

@Component
public class CompleteScheduleConfig implements SchedulingConfigurer
{

    @Autowired
    private CronDao cronMapper;

    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        taskRegistrar.addTriggerTask(
                ()-> System.out.println("時(shí)間到了哦,當(dāng)前時(shí)間為"+ LocalDateTime.now().toLocalTime()),
//                設(shè)置定時(shí)任務(wù)執(zhí)行周期,從數(shù)據(jù)庫(kù)中獲取
                triggerContext -> {
                    String cron=cronMapper.selectById(1).getCronExpression();
                    if(cron==null){
                        return null;
                    }
//                    返回執(zhí)行周期
                    return new CronTrigger(cron).nextExecutionTime(triggerContext);
                }
        );
    }

這里我把需要從數(shù)據(jù)中查的cron表達(dá)式id寫死了,讀者可以根據(jù)自己的項(xiàng)目需求進(jìn)行修改。

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

相關(guān)文章

  • Java實(shí)現(xiàn)心跳機(jī)制的方法

    Java實(shí)現(xiàn)心跳機(jī)制的方法

    這篇文章主要介紹了Java實(shí)現(xiàn)心跳機(jī)制的方法,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • Spring RestTemplate的使用與踩坑

    Spring RestTemplate的使用與踩坑

    RestTemplate是一個(gè)執(zhí)行HTTP請(qǐng)求的同步阻塞式工具類,它僅僅只是在HTTP客戶端庫(kù)基礎(chǔ)上,封裝了更加簡(jiǎn)單易用的模板方法API,方便程序員利用已提供的模板方法發(fā)起網(wǎng)絡(luò)請(qǐng)求和處理,能很大程度上提升我們的開發(fā)效率
    2023-02-02
  • idea中如何查看類中所有方法列表

    idea中如何查看類中所有方法列表

    這篇文章主要介紹了idea中如何查看類中所有方法列表問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 詳解Java的MyBatis框架中動(dòng)態(tài)SQL的基本用法

    詳解Java的MyBatis框架中動(dòng)態(tài)SQL的基本用法

    這篇文章主要介紹了詳解Java的MyBatis框架中動(dòng)態(tài)SQL的基本用法,文中列出了一些常用SQL動(dòng)態(tài)語(yǔ)句進(jìn)行講解,需要的朋友可以參考下
    2016-04-04
  • Java下載文件時(shí)文件名亂碼問(wèn)題解決辦法

    Java下載文件時(shí)文件名亂碼問(wèn)題解決辦法

    我最近在開發(fā)時(shí)遇到了文件另存為時(shí)文件名出現(xiàn)亂碼,在火狐上正常的文件名,在IE中又出現(xiàn)亂碼問(wèn)題,然后好不容易在IE下調(diào)試好了文件名亂碼問(wèn)題,在火狐下又出現(xiàn)亂碼,最后終于感覺(jué)這樣是能解決了。具體如下:
    2013-04-04
  • Java Native關(guān)鍵字原理及作用解析

    Java Native關(guān)鍵字原理及作用解析

    這篇文章主要介紹了Java Native關(guān)鍵字原理及作用解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • SpringBoot如何取消內(nèi)置Tomcat啟動(dòng)并改用外接Tomcat

    SpringBoot如何取消內(nèi)置Tomcat啟動(dòng)并改用外接Tomcat

    這篇文章主要介紹了SpringBoot如何取消內(nèi)置Tomcat啟動(dòng)并改用外接Tomcat,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 詳解Java信號(hào)量Semaphore的原理及使用

    詳解Java信號(hào)量Semaphore的原理及使用

    Semaphore來(lái)自于JDK1.5的JUC包,直譯過(guò)來(lái)就是信號(hào)量,被作為一種多線程并發(fā)控制工具來(lái)使用。本文將詳解其原理與使用方法,感興趣的可以學(xué)習(xí)一下
    2022-05-05
  • SpringBoot整合Redis實(shí)現(xiàn)附近位置查找(LBS)功能

    SpringBoot整合Redis實(shí)現(xiàn)附近位置查找(LBS)功能

    Redis 提供了 GEO 數(shù)據(jù)結(jié)構(gòu),可以高效地存儲(chǔ)和查詢地理位置數(shù)據(jù),本文將介紹如何使用 Spring Boot + Redis 來(lái)實(shí)現(xiàn)附近位置查找,需要的可以了解下
    2025-03-03
  • maven依賴關(guān)系中的<scope>provided</scope>使用詳解

    maven依賴關(guān)系中的<scope>provided</scope>使用詳解

    這篇文章主要介紹了maven依賴關(guān)系中的<scope>provided</scope>使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評(píng)論

南城县| 高阳县| 盐边县| 肥乡县| 遂平县| 都昌县| 项城市| 商南县| 元氏县| 盖州市| 义马市| 石阡县| 长白| 东宁县| 犍为县| 无为县| 湛江市| 贵州省| 兴隆县| 布尔津县| 沛县| 武乡县| 连州市| 民县| 永泰县| 望奎县| 手机| 门源| 德阳市| 额敏县| 青神县| 溧水县| 海淀区| 祥云县| 嘉兴市| 平原县| 通城县| 桦甸市| 定边县| 佳木斯市| 唐河县|