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

@Schedule?如何解決定時任務(wù)推遲執(zhí)行

 更新時間:2022年09月30日 16:27:03   作者:Dily_Su  
這篇文章主要介紹了@Schedule?如何解決定時任務(wù)推遲執(zhí)行問題。具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

前言

SpringBoot 實現(xiàn)定時任務(wù)很簡單,只需要使用**@Scheduled**注解即可,但是該注解是實現(xiàn)的定時任務(wù)默認是單線程的,也就意味著多個定時任務(wù)執(zhí)行時就可能導(dǎo)致線程堵塞,延緩定時任務(wù)的執(zhí)行。

下面就一步一步來解決這個問題。

一、@Scheduled

1、代碼

// 啟用定時任務(wù)
@EnableScheduling 
@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}
@Component
public class Task {
    Logger logger = LoggerFactory.getLogger(Task.class);
	// 每五秒執(zhí)行一次
    @Scheduled(cron = "0/5 * * * * ?")
    public void taskTestA() throws InterruptedException {
        logger.info("A:");
        TimeUnit.SECONDS.sleep(20);
    }
  
    // 每十秒執(zhí)行一次
    @Scheduled(cron = "0/10 * * * * ?")
    public void taskTestB() {
        logger.info("B:");
    }
}

2、結(jié)果

代碼

由圖可知,首先這兩個定時任務(wù)都是單線程的,但是當定時A執(zhí)行了一次后,由于定時A中有個休眠20秒,然后執(zhí)行定時任務(wù)B,所以線程A第二次執(zhí)行在25秒后才執(zhí)行,這就是由于@Scheduled定時任務(wù)是單線程,造成的線程堵塞,導(dǎo)致定時任務(wù)推遲執(zhí)行。

二、@Scheduled + 配置線程池

1、代碼

和前面@Scheduled 相比,僅僅增加了配置線程池

// 若不設(shè)置默認為單線程,這里設(shè)置使用線程池,大小為4
spring:
  task:
    scheduling:
      pool:
        size: 4

2、結(jié)果

由圖可知,增加了線程池,這樣使得定時任務(wù)A和B在不同的線程進行執(zhí)行,但是定時任務(wù)A的第二次執(zhí)行,依舊是在25秒后執(zhí)行,由此可知這種方式其實解決的是不同定時任務(wù)之間的進程堵塞。

三、@Scheduled + @Async

1、代碼

和前面相比,僅僅增加了配置

// 啟用異步,動態(tài)創(chuàng)建線程
@EnableAsync  
@EnableScheduling
@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}
@Component
public class Task { 
    Logger logger = LoggerFactory.getLogger(Task.class);
    // 異步,動態(tài)創(chuàng)建線程
    @Async
    @Scheduled(cron = "0/5 * * * * ?")
    public void taskTestA() throws InterruptedException {
        logger.info("A:");
        TimeUnit.SECONDS.sleep(20);
    }
    // 異步,動態(tài)創(chuàng)建線程
    @Async
    @Scheduled(cron = "0/10 * * * * ?")
    public void taskTestB() {
        logger.info("B:");
    }
}

2、結(jié)果

由圖可知,啟用了異步,使用了spring 默認的線程池,動態(tài)創(chuàng)建線程,這樣使得定時任務(wù)A和B在不同的線程進行執(zhí)行,同時任務(wù)A的多次運行也是異步執(zhí)行,這樣就能確保所有定時任務(wù)不會延遲執(zhí)行!

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

相關(guān)文章

  • idea2020安裝MybatisCodeHelper插件的圖文教程

    idea2020安裝MybatisCodeHelper插件的圖文教程

    這篇文章主要介紹了idea2020安裝MybatisCodeHelper插件的方法,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • Mybatis中resultMap標簽和sql標簽的設(shè)置方式

    Mybatis中resultMap標簽和sql標簽的設(shè)置方式

    這篇文章主要介紹了Mybatis中resultMap標簽和sql標簽的設(shè)置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java?超詳細講解類的定義方式和對象的實例化

    Java?超詳細講解類的定義方式和對象的實例化

    Java是一門純面向?qū)ο蟮恼Z言(Object?Oriented?Program,繼承OOP),在面對對象的世界里面,一切皆為對象。面向?qū)ο笫墙鉀Q問題的一種思想,主要依靠對象之間的交互完成一件事情
    2022-03-03
  • 說說在Spring中如何引用外部屬性文件的方法

    說說在Spring中如何引用外部屬性文件的方法

    這篇文章主要介紹了說說在Spring中如何引用外部屬性文件的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • mybatis實現(xiàn)獲取入?yún)⑹荓ist和Map的取值

    mybatis實現(xiàn)獲取入?yún)⑹荓ist和Map的取值

    這篇文章主要介紹了mybatis實現(xiàn)獲取入?yún)⑹荓ist和Map的取值問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Java設(shè)計模式之抽象工廠模式簡析

    Java設(shè)計模式之抽象工廠模式簡析

    這篇文章主要介紹了Java設(shè)計模式之抽象工廠模式簡析, 抽象工廠模式是工廠方法模式的升級版本,他用來創(chuàng)建一組相關(guān)或者相互依賴的對象,他與工廠方法模式的區(qū)別就在于,工廠方法模式針對的是一個產(chǎn)品等級結(jié)構(gòu),需要的朋友可以參考下
    2023-12-12
  • Spring Cloud分布式定時器之ShedLock的實現(xiàn)

    Spring Cloud分布式定時器之ShedLock的實現(xiàn)

    這篇文章主要介紹了Spring Cloud分布式定時器之ShedLock的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2021-03-03
  • Java多線程:生產(chǎn)者與消費者案例

    Java多線程:生產(chǎn)者與消費者案例

    這篇文章主要介紹了Java并發(fā)編程中的生產(chǎn)者與消費者模型簡述,多線程并發(fā)是Java編程中最終要的部分之一,需要的朋友可以參考下,希望能給你帶來幫助
    2021-07-07
  • java中ExecutorService創(chuàng)建方法總結(jié)

    java中ExecutorService創(chuàng)建方法總結(jié)

    在本篇文章里小編給大家整理了一篇關(guān)于java中ExecutorService創(chuàng)建方法總結(jié),有興趣的朋友們可以參考下。
    2021-01-01
  • 基于Properties類操作.properties配置文件方法總結(jié)

    基于Properties類操作.properties配置文件方法總結(jié)

    這篇文章主要介紹了Properties類操作.properties配置文件方法總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09

最新評論