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

SpringBoot項目如何使用多線程執(zhí)行定時任務(wù)

 更新時間:2025年01月14日 09:34:01   作者:左直拳  
在SpringBoot項目中使用多線程執(zhí)行定時任務(wù),可以避免一個耗時任務(wù)影響其他任務(wù),通過配置線程池任務(wù)調(diào)度器,Spring會自動使用多線程執(zhí)行定時任務(wù)

SpringBoot使用多線程執(zhí)行定時任務(wù)

我在一個Spring Boot項目中,采用定時器執(zhí)行一些操作,比如10秒就發(fā)送一次數(shù)據(jù)。

這些操作有2個,如下所示。

我就想,雖然這兩個操作各自指定了時間頻率,但如果其中一個操作非常耗時,會不會影響其他操作呢?

答案是會。

@Service
public class ShareDataBySend {
    @Autowired
    SendDataService sendDataService;

	//操作1
    @Scheduled(fixedRateString = "${sff.interval}")  // 每 * 秒執(zhí)行一次
    private void send() {
        sendDataService.sendThem();
    }

	//操作2
    @Scheduled(fixedRateString = "${sff.interval}")  // 每 * 秒執(zhí)行一次
    private void send2() {
        sendDataService.sendNce();
    }
}

怎么辦呢?AI告訴我,引入多線程。

引入多線程

上面代碼中,使用了注解@Scheduled。這個注解告訴 Spring ,它需要定期執(zhí)行標注的方法。@Scheduled依賴于 Spring 的任務(wù)調(diào)度機制,默認使用一個單線程的任務(wù)調(diào)度器執(zhí)行任務(wù)。如果沒有顯式地配置線程池,所有的定時任務(wù)都會在同一個線程中按順序執(zhí)行。然而,當我們配置一個線程池任務(wù)調(diào)度器時,Spring 會自動使用這個調(diào)度器,這樣每個定時任務(wù)(如 send() 和 send2())就會在不同的線程中并發(fā)執(zhí)行。

也就是說,我們不需要修改上面這個ShareDataBySend類,而是新注冊一個線程池任務(wù)調(diào)度器,系統(tǒng)就會自動改用多線程。這一切,都源自于Spring Boot框架的本身機制。

代碼示例

1、新增線程池任務(wù)調(diào)度器配置類

import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;

@Configuration
public class SchedulerConfig implements SchedulingConfigurer {
    /**
     * 我們將默認的單線程調(diào)度器替換成了 ThreadPoolTaskScheduler,并設(shè)置了線程池大?。ɡ?10)。
     * 這意味著多達 10 個任務(wù)可以并發(fā)執(zhí)行。
     */
    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
        taskScheduler.setPoolSize(10);  // 設(shè)置線程池大小,可根據(jù)需要調(diào)整
        taskScheduler.initialize();
        taskRegistrar.setTaskScheduler(taskScheduler);
    }
}

在系統(tǒng)啟動的時候,Spring Boot會將帶有@Config注解的類型實例化到容器中,因此SchedulerConfig 配置的 ThreadPoolTaskScheduler 被初始化。

當定時任務(wù)觸發(fā)時(根據(jù) @Scheduled 的定義),任務(wù)被提交給 ThreadPoolTaskScheduler 處理。

如果有多個任務(wù),它們會被分配到線程池中的不同線程上執(zhí)行,從而實現(xiàn)并發(fā)。

2、原ShareDataBySend類

不需要作任何修改

總結(jié)

我用java也有好幾年了。其實一直都是在用Spring Boot。Spring Boot是一個java開發(fā)框架,但我感覺Spring Boot已經(jīng)足夠優(yōu)秀和方便,對于我來說,Spring Boot == Java。當然了,本質(zhì)上,Spring Boot可以算是J2EE的一個流派,但青出于藍。

另外,我就相同的問題,分別問通義千問和chatGPT,前者給出的方案不僅繁瑣,而且有錯誤。這或許不是模型的問題,而是模型訓練的材料有問題。也就是說,也許中文世界中,編程問題的答案質(zhì)量,與老外相比,不在一個檔次內(nèi)。

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

相關(guān)文章

  • Idea中Java項目如何修改項目名

    Idea中Java項目如何修改項目名

    這篇文章主要介紹了Idea中Java項目如何修改項目名問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 詳解Spring?Security怎么從數(shù)據(jù)庫加載我們的用戶

    詳解Spring?Security怎么從數(shù)據(jù)庫加載我們的用戶

    這篇文章主要為大家介紹了Spring?Security怎么從數(shù)據(jù)庫加載我們的用戶示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • Springboot項目打包如何將依賴的jar包輸出到指定目錄

    Springboot項目打包如何將依賴的jar包輸出到指定目錄

    公司要對springboot項目依賴的jar包進行升級,但是遇到一個問題,項目打包之后,沒辦法看到他里面依賴的jar包,版本到底是不是升上去了,沒辦法看到,下面通過本文給大家分享Springboot項目打包如何將依賴的jar包輸出到指定目錄,感興趣的朋友一起看看吧
    2024-05-05
  • 單臺Spring Cloud Eureka升級到三臺Eureka高可用集群

    單臺Spring Cloud Eureka升級到三臺Eureka高可用集群

    今天小編就為大家分享一篇關(guān)于單臺Spring Cloud Eureka升級到三臺Eureka高可用集群,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Java生成范圍內(nèi)隨機整數(shù)的三種方法

    Java生成范圍內(nèi)隨機整數(shù)的三種方法

    在Java中生成隨機數(shù)的場景有很多,下面這篇文章主要給大家介紹了關(guān)于Java生成范圍內(nèi)隨機整數(shù)的三種方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • IntelliJ IDEA 2017 漢化包及圖文教程

    IntelliJ IDEA 2017 漢化包及圖文教程

    這篇文章主要介紹了IntelliJ IDEA 2017 漢化包及圖文教程,文中給大家提供兩種方法,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2018-03-03
  • JVM的基本介紹以及垃圾回收

    JVM的基本介紹以及垃圾回收

    垃圾回收(Garbage Collection,GC),顧名思義就是釋放垃圾占用的空間,防止內(nèi)存泄露,這篇文章主要給大家介紹了關(guān)于JVM垃圾回收的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • java synchronized同步靜態(tài)方法和同步非靜態(tài)方法的異同

    java synchronized同步靜態(tài)方法和同步非靜態(tài)方法的異同

    這篇文章主要介紹了java synchronized同步靜態(tài)方法和同步非靜態(tài)方法的異同的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • 如何使用Spring Boot ApplicationRunner解析命令行中的參數(shù)

    如何使用Spring Boot ApplicationRunner解析命令行中的參數(shù)

    這篇文章主要介紹了使用Spring Boot ApplicationRunner解析命令行中的參數(shù),本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-12-12
  • Windows10 Java環(huán)境變量配置過程圖解

    Windows10 Java環(huán)境變量配置過程圖解

    這篇文章主要介紹了Windows10 Java環(huán)境變量配置過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07

最新評論

泊头市| 本溪市| 乌苏市| 海兴县| 兴山县| 沧州市| 大足县| 衡阳市| 嘉荫县| 远安县| 榆林市| 文山县| 德清县| 山东省| 托里县| 巴林左旗| 兴国县| 乌苏市| 故城县| 定西市| 密云县| 富源县| 富顺县| 新河县| 新营市| 称多县| 信丰县| 永济市| 安平县| 鹰潭市| 监利县| 华坪县| 丹寨县| 新田县| 武邑县| 开鲁县| 延川县| 宜丰县| 叙永县| 绍兴县| 酒泉市|