一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - 聊聊SpringBoot的@Scheduled的并發(fā)問(wèn)題

聊聊SpringBoot的@Scheduled的并發(fā)問(wèn)題

2022-03-09 00:48正兒八經(jīng)的胡說(shuō)八道 Java教程

這篇文章主要介紹了聊聊SpringBoot的@Scheduled的并發(fā)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

SpringBoot @Scheduled的并發(fā)

由于SpringBoot自帶的@Scheduled是一個(gè)阻塞執(zhí)行的定時(shí)任務(wù),所以效率會(huì)很慢,就會(huì)造成同一個(gè)時(shí)間段內(nèi)只有一個(gè)定時(shí)任務(wù)在執(zhí)行,其余的就會(huì)阻塞

現(xiàn)有兩個(gè)定時(shí)任務(wù)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
@Component("aa")
public class aa {
    @Scheduled(cron = "0 44 17 * * ?")
    public void bb() {
        try {
            System.out.println("aa執(zhí)行時(shí)間:" + new Date());
            Thread.sleep(65000);
            System.out.println("aa完成時(shí)間:" + new Date());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
?
1
2
3
4
5
6
7
8
9
10
11
12
@Component("bb")
public class bb {
    @Scheduled(cron = "0 55 17 * * ?")
    public void aa() {
        try {
            System.out.println("bb執(zhí)行時(shí)間:" + new Date());
            Thread.sleep(10000);
            System.out.println("bb完成時(shí)間:" + new Date());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

默認(rèn)的在啟動(dòng)項(xiàng)加入@EnableScheduling注解就可以運(yùn)行了

聊聊SpringBoot的@Scheduled的并發(fā)問(wèn)題

最終,執(zhí)行的結(jié)果令人大跌眼鏡。

聊聊SpringBoot的@Scheduled的并發(fā)問(wèn)題

aa的任務(wù)由于執(zhí)行時(shí)間需要65秒,超過(guò)了bb任務(wù)執(zhí)行的時(shí)間,結(jié)果bb任務(wù)執(zhí)行的時(shí)間被阻塞掉,延遲了5秒執(zhí)行。

解決方法是在啟動(dòng)項(xiàng)類(lèi)中加入如下配置即可

?
1
2
3
4
5
6
@Bean
   public TaskScheduler taskScheduler() {
       ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
       taskScheduler.setPoolSize(50);
       return taskScheduler;
   }

如果是xml

?
1
2
3
4
<!-- 注解式 -->
<task:annotation-driven executor="myExecutor" scheduler="myScheduler"/>
<task:executor id="myExecutor" pool-size="5"/>
<task:scheduler id="myScheduler" pool-size="10"/>

spring @Scheduled 并發(fā)執(zhí)行

spring @Scheduled ,默認(rèn)基于單線程執(zhí)行,如果需要基于多線程執(zhí)行,需要在配置文件中配置如下

?
1
2
queue-capacity="500" rejection-policy="CALLER_RUNS" />
scheduler="scheduler" />

具體可以參考spring 幫助文檔對(duì)annotation-driven的executor和scheduler的解釋

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

原文鏈接:https://blog.csdn.net/weixin_43958556/article/details/116456909

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 青久草视频 | 国产精品天天看天天爽 | 丁香五香天堂 | 九九九九九九精品免费 | 韩国久播影院理论片不卡影院 | 秋霞在线观看成人高清视频51 | 色聚网久久综合 | 国产精品国产国产aⅴ | 欧美yyy| 麻豆亚洲一区 | 国产成人看片免费视频观看 | 免费人成黄页在线观看69 | 1024人成网站色 | 摸咪网在线影院在线观看 | 色卡7707c| 国产精品国语自产拍在线观看 | 成人免费福利网站在线看 | 三级伦理影院 | 爱草视频| 性插图动态图无遮挡 | 我和黑色丝袜班主任 | 欧美专区在线视频 | 亚洲视频在线观看免费视频 | 天天躁夜夜躁很很躁 | 娇小8一12xxxx第一次 | free chinese麻豆| 色综合视频一区二区观看 | 亚洲冬月枫中文字幕在线看 | 911爱豆传媒国产 | 国内在线观看 | 国产日韩欧美一区 | 亚洲 综合 自拍 精品 在线 | 青青成人福利国产在线视频 | 色综合天天综合网国产人 | 日本在线视 | 911香蕉视频 | 男人的天堂久久爱 | 日日操综合 | 短篇最污的乱淫伦小说全集 | 色综合天天综合网站中国 | 日本一道高清不卡免费 |