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

解決SpringBoot中的Scheduled單線程執(zhí)行問題

 更新時(shí)間:2022年06月30日 17:16:08   作者:老司機(jī)張師傅  
在一次SpringBoot中使用Scheduled定時(shí)任務(wù)時(shí),發(fā)現(xiàn)某一個(gè)任務(wù)出現(xiàn)執(zhí)行占用大量資源,會(huì)導(dǎo)致其他任務(wù)也執(zhí)行失敗,這篇文章主要介紹了SpringBoot中的Scheduled單線程執(zhí)行問題及解決方法,需要的朋友可以參考下

問題描述

在一次SpringBoot中使用Scheduled定時(shí)任務(wù)時(shí),發(fā)現(xiàn)某一個(gè)任務(wù)出現(xiàn)執(zhí)行占用大量資源,會(huì)導(dǎo)致其他任務(wù)也執(zhí)行失敗。
類似于以下模擬場(chǎng)景,test1定時(shí)任務(wù)模擬有五秒鐘執(zhí)行時(shí)間,這時(shí)會(huì)同步影響到test2任務(wù)的執(zhí)行,導(dǎo)致test2任務(wù)也變成五秒執(zhí)行一次。

    @Scheduled(fixedRate = 1000)
    public void test1() throws InterruptedException {
        log.info(Thread.currentThread().getName() + " | task01 ");
        Thread.sleep(5000);
    }

    @Scheduled(fixedRate = 2000)
    public void test2() {
        log.info(Thread.currentThread().getName() + " | task02 ");
    }

原因分析:

經(jīng)過相關(guān)資料查閱,發(fā)現(xiàn)Scheduled定時(shí)任務(wù)默認(rèn)的線程數(shù)只有一個(gè),進(jìn)行定時(shí)任務(wù)調(diào)度時(shí)會(huì)同步的去調(diào)度,一個(gè)執(zhí)行完成后再執(zhí)行另一個(gè),這是導(dǎo)致該問題的直接原因。

解決方案:

    @Bean
    public TaskScheduler taskScheduler() {
        ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
        // 設(shè)置線程數(shù)量
        taskScheduler.setPoolSize(50);
        return taskScheduler;
    }

添加一個(gè)配置,設(shè)置TaskScheduler線程數(shù)為多個(gè),這樣再執(zhí)行時(shí)就會(huì)異步執(zhí)行了,各個(gè)定時(shí)任務(wù)間互不影響。

補(bǔ)充:

使用以下Java的util包中帶的TimerTask也可以進(jìn)行定時(shí)任務(wù)的執(zhí)行。
以下參數(shù)中TimerTask是執(zhí)行的任務(wù),0表示第一次延遲0秒執(zhí)行,3000表示每3000毫秒執(zhí)行一次。

						// true表示定時(shí)任務(wù)創(chuàng)建為守護(hù)線程
                        Timer timer = new Timer(true);
                        //timer.scheduleAtFixedRate();
                        timer.schedule(new TimerTask() {
                            @Override
                            public void run() {
                                logger.info(Thread.currentThread().getName() + "************"+ftpGaFilePrefix);
                            }
                        }, 0, 3000);

到此這篇關(guān)于SpringBoot中的Scheduled單線程執(zhí)行的文章就介紹到這了,更多相關(guān)SpringBoot Scheduled單線程內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論