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

解決多個(gè)@Scheduled定時(shí)任務(wù)執(zhí)行時(shí)個(gè)別不執(zhí)行問題

 更新時(shí)間:2024年08月02日 15:19:03   作者:在代碼的路上奔跑  
這篇文章主要介紹了解決多個(gè)@Scheduled定時(shí)任務(wù)執(zhí)行時(shí)個(gè)別不執(zhí)行問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

多個(gè)@Scheduled定時(shí)任務(wù)執(zhí)行時(shí)個(gè)別不執(zhí)行

原因

項(xiàng)目在啟動(dòng)時(shí),如果沒有指定線程池的大小,默認(rèn)會(huì)創(chuàng)建核心線程數(shù)為1的默認(rèn)線程池,故而當(dāng)項(xiàng)目中出現(xiàn)多個(gè)@Scheduled線程時(shí),只能一個(gè)個(gè)的執(zhí)行,從而導(dǎo)致個(gè)別線程執(zhí)行時(shí)間過長(或長期執(zhí)行)時(shí),其他定時(shí)器不能按照指定的規(guī)則進(jìn)行執(zhí)行。

解決辦法

1、配置執(zhí)行線程池的大小

spring.task.scheduling.pool.size=10

2.將定時(shí)器設(shè)置為異步線程

/**
異步線程
定時(shí)器延遲1秒啟動(dòng),每距上一次執(zhí)行完成后間隔3秒執(zhí)行一次
*/
@Async(“taskExecutor”)
@Scheduled(initialDelay = 1000L, fixedDelay = 3000L)
public void test(){System.out.println(“—”+System.currentTimeMillis());//業(yè)務(wù)內(nèi)容
}

@Scheduled多定時(shí)任務(wù),重疊執(zhí)行

@Scheduled如果有兩個(gè)定時(shí)任務(wù),定時(shí)任務(wù)重復(fù)時(shí),只有一個(gè)可以執(zhí)行。如下

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
 
import java.time.LocalDateTime;
 
@Component
public class MyScheduled {
 
    @Scheduled(cron = "0/5 * * * * ?")
    public void execute1(){
        String curName = Thread.currentThread().getName() ;
        System.out.println("當(dāng)前時(shí)間:"+LocalDateTime.now()+"  任務(wù)execute1對(duì)應(yīng)的線程名: "+curName);
        try {
            Thread.sleep(1000);
        } catch (Exception e) {
            e.printStackTrace();
        }
 
    }
 
    @Scheduled(cron = "0/5 * * * * ?")
    public void execute2(){
 
        String curName = Thread.currentThread().getName() ;
        System.out.println("當(dāng)前時(shí)間:"+LocalDateTime.now()+"  任務(wù)execute2對(duì)應(yīng)的線程名: "+curName);
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

通過執(zhí)行可以看到,打印線程名稱為同一個(gè)。即如果不手動(dòng)指定線程池,則默認(rèn)啟動(dòng)單線程,進(jìn)行執(zhí)行定時(shí)任務(wù)。

如果想要多個(gè)定時(shí)任務(wù)重疊執(zhí)行,需要手動(dòng)指定線程池,如下

import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.stereotype.Component;
 
import java.time.LocalDateTime;
 
@Component
@EnableScheduling
public class MyScheduled {
 
    @Bean
    public TaskScheduler taskScheduler() {
        ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
        taskScheduler.setPoolSize(50);
        return taskScheduler;
    }
 
    @Scheduled(cron = "0/5 * * * * ?")
    public void execute1(){
        String curName = Thread.currentThread().getName() ;
        System.out.println("當(dāng)前時(shí)間:"+LocalDateTime.now()+"  任務(wù)execute1對(duì)應(yīng)的線程名: "+curName);
        try {
            Thread.sleep(1000);
        } catch (Exception e) {
            e.printStackTrace();
        }
 
    }
 
    @Scheduled(cron = "0/5 * * * * ?")
    public void execute2(){
 
        String curName = Thread.currentThread().getName() ;
        System.out.println("當(dāng)前時(shí)間:"+LocalDateTime.now()+"  任務(wù)execute2對(duì)應(yīng)的線程名: "+curName);
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

此時(shí),多個(gè)定時(shí)任務(wù),是不通的線程執(zhí)行,同時(shí),定時(shí)任務(wù)可以重疊執(zhí)行。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 對(duì)pytorch中不定長序列補(bǔ)齊的操作

    對(duì)pytorch中不定長序列補(bǔ)齊的操作

    這篇文章主要介紹了對(duì)pytorch中不定長序列補(bǔ)齊的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python函數(shù)定義、參數(shù)、返回值與作用域示例詳解

    Python函數(shù)定義、參數(shù)、返回值與作用域示例詳解

    函數(shù)是組織好的、可重復(fù)使用的代碼塊,用于執(zhí)行特定任務(wù),在Python中函數(shù)可以讓我們把復(fù)雜的程序分解成小的模塊,提高代碼的可讀性和復(fù)用性,這篇文章主要介紹了Python函數(shù)定義、參數(shù)、返回值與作用域的相關(guān)資料,需要的朋友可以參考下
    2026-04-04
  • Python 窗體(tkinter)按鈕 位置實(shí)例

    Python 窗體(tkinter)按鈕 位置實(shí)例

    今天小編就為大家分享一篇Python 窗體(tkinter)按鈕 位置實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • flask解析海康攝像頭視頻的使用

    flask解析海康攝像頭視頻的使用

    本文主要介紹了flask解析??禂z像頭視頻的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • PyCharm 2020 激活到 2100 年的教程

    PyCharm 2020 激活到 2100 年的教程

    這篇文章主要介紹了PyCharm 2020 激活到 2100 年,本文圖文并茂給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Tensorflow 自定義loss的情況下初始化部分變量方式

    Tensorflow 自定義loss的情況下初始化部分變量方式

    今天小編就為大家分享一篇Tensorflow 自定義loss的情況下初始化部分變量方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • python動(dòng)態(tài)加載技術(shù)解析

    python動(dòng)態(tài)加載技術(shù)解析

    這篇文章主要介紹了python動(dòng)態(tài)加載技術(shù)解析,說簡單點(diǎn)就是,如果開發(fā)者發(fā)現(xiàn)自己的代碼有bug,那么他可以在不關(guān)閉原來代碼的基礎(chǔ)之上,動(dòng)態(tài)替換模塊替換方法一般用reload來完成,需要的朋友可以參考下
    2023-07-07
  • python datetime中strptime用法詳解

    python datetime中strptime用法詳解

    這篇文章主要介紹了python 中datetime中strptime用法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • python修改txt文件中的某一項(xiàng)方法

    python修改txt文件中的某一項(xiàng)方法

    今天小編就為大家分享一篇python修改txt文件中的某一項(xiàng)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • python中定義結(jié)構(gòu)體的方法

    python中定義結(jié)構(gòu)體的方法

    Python中沒有專門定義結(jié)構(gòu)體的方法,但可以使用class標(biāo)記定義類來代替結(jié)構(gòu)體,其成員可以在構(gòu)造函數(shù)__init__中定義,具體方法如下,特分享下,方便需要的朋友
    2013-03-03

最新評(píng)論

井研县| 额济纳旗| 和顺县| 六盘水市| 盐城市| 渝中区| 荃湾区| 平和县| 即墨市| 图片| 堆龙德庆县| 丰宁| 黄骅市| 南木林县| 翁牛特旗| 天门市| 咸丰县| 寿阳县| 康乐县| 祁连县| 平罗县| 义马市| 临邑县| 抚州市| 蚌埠市| 辉南县| 犍为县| 新昌县| 城步| 老河口市| 精河县| 望谟县| 康保县| 米易县| 综艺| 临清市| 永登县| 宜城市| 霍林郭勒市| 大同县| 稻城县|