在Spring Boot中實現多線程任務調度

在Spring Boot中實現多線程任務調度

大家好,我是微賺淘客系統3.0的小編,也是冬天不穿秋褲,天冷也要風度的程序猿!

1. Spring Boot中的任務調度

Spring Boot通過集成Spring框架的Task Execution和Scheduling支持,提供了強大的任務調度功能。我們可以利用這些特性來實現多線程任務調度,處理定時任務和異步任務等需求。

2. 使用@Scheduled注解

Spring Boot中的@Scheduled注解可以很方便地定義定時任務。我們可以將一個方法標記為定時任務,并設置定時執行的周期或者固定延遲時間。

package cn.juwatech.scheduling;import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;@Component
public class ScheduledTasks {@Scheduled(fixedRate = 5000)public void reportCurrentTime() {System.out.println("Current time: " + System.currentTimeMillis());}@Scheduled(cron = "0 0 12 * * ?")public void executeDailyTask() {System.out.println("Executing daily task at noon.");}
}

上述示例中,reportCurrentTime方法每隔5秒輸出當前時間,executeDailyTask方法每天中午12點執行一次任務。

3. 使用ThreadPoolTaskExecutor實現異步任務

除了定時任務,Spring Boot還支持異步任務的處理。我們可以配置ThreadPoolTaskExecutor來執行異步任務,實現并發處理。

package cn.juwatech.async;import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;@Service
public class AsyncTaskService {@Asyncpublic void executeAsyncTask(int taskNumber) {System.out.println("Executing async task: " + taskNumber);}
}

在上述示例中,executeAsyncTask方法被@Async注解標記,表明這是一個異步任務。Spring Boot會自動創建線程池來執行這些異步任務。

4. 配置線程池

為了更好地控制線程池的行為,我們可以在Spring Boot中配置ThreadPoolTaskExecutor bean。

package cn.juwatech.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;import java.util.concurrent.Executor;@Configuration
@EnableAsync
public class AsyncConfig {@Bean(name = "taskExecutor")public Executor taskExecutor() {ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();executor.setCorePoolSize(5);executor.setMaxPoolSize(10);executor.setQueueCapacity(25);executor.setThreadNamePrefix("AsyncTask-");executor.initialize();return executor;}
}

在上述示例中,配置了一個名為taskExecutor的線程池,設置了核心線程數、最大線程數、隊列容量等參數。

5. 結合業務場景

實際應用中,我們可以根據業務需求,結合定時任務和異步任務,實現復雜的任務調度邏輯。例如,定時從外部接口獲取數據并異步處理,定時生成報表等。

package cn.juwatech.service;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;@Service
public class DataProcessingService {@Autowiredprivate ExternalAPIService externalAPIService;@Autowiredprivate AsyncTaskService asyncTaskService;@Scheduled(cron = "0 0 1 * * ?")public void processDataFromExternalAPI() {String data = externalAPIService.getData();asyncTaskService.processData(data);}
}

上述示例中,定時任務processDataFromExternalAPI每天凌晨1點從外部API獲取數據,并通過異步任務處理數據。

微賺淘客系統3.0小編出品,必屬精品,轉載請注明出處!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/41946.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/41946.shtml
英文地址,請注明出處:http://en.pswp.cn/web/41946.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Double 4 VR仿真情景實訓教學系統在法律專業課堂上的應用

隨著科技的飛速發展,VR技術逐漸滲透到各個領域,為教育行業帶來了革命性的變化。 VR技術以其獨特的沉浸式體驗,為法律課堂帶來了前所未有的學習體驗。通過Double 4 VR仿真情景實訓教學系統,學生可以身臨其境地進入虛擬的仿真情景中…

vue前端面試

一 .v-if和v-show的區別 v-if 和 v-show 是 Vue.js 中兩個常用的條件渲染指令&#xff0c;它們都可以根據條件決定是否渲染某個元素。但是它們之間存在一些區別。 語法&#xff1a;v-if 和 v-show 的語法相同&#xff0c;都接收一個布爾值作為參數。 <div v-if"show…

權力之望怎么下載客戶端 權力之望一鍵下載

《權力之望》是一款由NX3 Games開發、Smilegate發行的多人在線動作MMORPG游戲。這款游戲最大的特點是高度的自由度和豐富的角色定制選項。我們在游戲中不僅可以自由更換武器&#xff0c;而且游戲還提供了54種能力和60多種職業選擇&#xff0c;讓我們可以根據自己的游戲風格和喜…

繼 承

為什么要有繼承&#xff0c;繼承的作用&#xff1f; 繼承(inheritance)機制&#xff1a;是面向對象程序設計使代碼可以復用的最重要的手段&#xff0c;它允許程序員在保持原有類特性的基礎上進行擴展&#xff0c;增加新功能&#xff0c;這樣產生新的類&#xff0c;稱派生類。 …

【人工智能】—基于成都市各區(市)縣租房價格預測建模研究

引言 隨著城市化進程的加速&#xff0c;人口流動日益頻繁&#xff0c;租房市場作為城市生活的重要組成部分&#xff0c;其價格波動對居民生活質量和城市經濟發展具有顯著影響。成都市&#xff0c;作為中國西部地區的經濟、文化、交通和科技中心&#xff0c;近年來吸引了大量人…

為什么獨立站需要高質量的GPB外鏈?

獨立站需要高質量的GPB外鏈&#xff0c;主要是因為它們能顯著提升網站的可信度和可見性。高質量的外鏈相當于得到其他權威網站的認可和推薦&#xff0c;這會讓搜索引擎認為你的內容有價值&#xff0c;從而提升你的搜索排名。試想一下&#xff0c;當其他有影響力的網站愿意鏈接到…

非阻塞式 I/O 模型 【NIO】補充內容

NIO是一種同步非阻塞IO, 基于Reactor模型來實現的。其實相當于就是一個線程處理大量的客戶端的請求&#xff0c;通過一個線程輪詢大量的channel&#xff0c;每次就獲取一批有事件的channel&#xff0c;然后對每個請求啟動一個線程處理即可。這里的核心就是非阻塞&#xff0c;就…

請求接口在控制臺報cors跨域問題

我的問題是&#xff1a;BASE_URL沒有和本地IP設置一致 剛開始&#xff1a;&#xff08;這個不是我本地電腦的地址&#xff09; 所以我要把&#xff1a;這個地址改為我本地電腦的ip&#xff08;http://192.168.2.50:8087&#xff09; BASE_URL: http://localhost:8087/api/ 或…

單位電腦文檔怎么加密?哪種方法最有效?

單位電腦文檔的加密是保障信息安全的重要措施之一&#xff0c;它可以防止未經授權的訪問和數據泄露。 選擇最佳的加密方法取決于您的具體需求&#xff0c;包括文檔的敏感程度、加密的便捷性、成本、以及是否需要跨平臺兼容性。下面是幾種常見的加密方法及其優缺點&#xff0c;…

【SpringBoot3】結合 gRpc 實現遠程服務調用

一、gRPC概念介紹 gRPC&#xff08;Google Remote Procedure Call&#xff0c;Google遠程過程調用&#xff09;是一個現代開源高性能遠程過程調用(RPC)框架&#xff0c;可以在任何環境中運行。它由Google開發&#xff0c;旨在幫助開發人員更輕松地構建分布式應用&#xff0c;特…

昇思學習打卡-8-FCN圖像語義分割

目錄 FCN介紹FCN所用的技術訓練數據的可視化模型訓練模型推理FCN的優點和不足優點不足 FCN介紹 FCN主要用于圖像分割領域&#xff0c;是一種端到端的分割方法&#xff0c;是深度學習應用在圖像語義分割的開山之作。通過進行像素級的預測直接得出與原圖大小相等的label map。因…

clean code-代碼整潔之道 閱讀筆記(第十六章)

第十六章 重構SerialDate 16.1 首先&#xff0c;讓它能工作 利用SerialDateTests來完整的理解和重構SerialDate用Clover來檢查單元測試覆蓋了哪些代碼&#xff0c;效果不行重新編寫自己的單元測試經過簡單的修改&#xff0c;讓測試能夠通過 16.2 讓它做對 全過程&#xff1…

若依微服務初始化搭建教程

文章目錄 &#x1f95d;從Gitee拉取代碼&#x1f344;初始化項目配置配置項目maven配置項目JDKmaven - clean - install &#x1f352;數據源配置創建config / seata數據庫創建ry-cloud數據源導入ry-cloud數據 &#x1f370;啟動Nacos下載Nacos修改Nacos配置雙擊startup.cmd啟動…

梧桐數據庫:查詢優化器是提升數據庫性能的關鍵技術

查詢優化器是數據庫管理系統中的核心組件之一&#xff0c;它的主要作用是在執行查詢語句之前&#xff0c;選擇最優的執行計劃&#xff0c;以提高查詢性能。 查詢優化器的基本原理 查詢優化器的主要目標是找到一個執行代價最小的查詢執行計劃。它通過對查詢語句進行語法分析、…

GraphRAG:AI的全局文本理解革新

前言 在人工智能領域&#xff0c;處理和理解大量文本數據始終是一個挑戰。隨著大型語言模型&#xff08;LLMs&#xff09;的出現&#xff0c;自動化地進行復雜的語義理解和文本摘要變得可能。檢索增強生成&#xff08;RAG&#xff09;方法因其能有效結合檢索與生成技術&#x…

C++基礎語法之重載引用和命名空間等

1.C關鍵字 c的關鍵字比我們的c語言的關鍵字多&#xff0c;c包容C語言并對C語言進行了補充&#xff0c;但是我們對關鍵字的學習是在我們后面逐漸學習的。這里我們的只是提供一個表格對齊了解一下。 2.命名空間 我們c出現了命名空間的概念&#xff0c;用關鍵字namespace來定義。…

LeetCode 二分查找

1.題目要求: 給定一個 n 個元素有序的&#xff08;升序&#xff09;整型數組 nums 和一個目標值 target &#xff0c;寫一個函數搜索 nums 中的 target&#xff0c;如果目標值存在返回下標&#xff0c;否則返回 -1。示例 1:輸入: nums [-1,0,3,5,9,12], target 9 輸出: 4 解…

論文閱讀 - Intriguing properties of neural networks

Intriguing properties of neural networks 經典論文、對抗樣本領域的開山之作 發布時間&#xff1a;2014 論文鏈接: https://arxiv.org/pdf/1312.6199.pdf 作者&#xff1a;Christian Szegedy, Wojciech Zaremba, Ilya Sutskever, Joan Bruna, Dumitru Erhan, Ian Goodfellow,…

信息技術課堂上如何有效防止學生玩游戲?

防止學生在信息技術課堂上玩游戲需要綜合運用教育策略和技術手段。以下是一些有效的措施&#xff0c;可以用來阻止或減少學生在課堂上玩游戲的行為&#xff1a; 1. 明確課堂規則 在課程開始之初&#xff0c;向學生清楚地說明課堂紀律&#xff0c;強調不得在上課時間玩游戲。 制…

電阻負載柜的工作原理是什么?

電阻負載柜是用于模擬電網中各種負載特性的設備&#xff0c;廣泛應用于電力系統、新能源發電、電動汽車充電站等領域。其工作原理主要包括以下幾個方面&#xff1a; 1. 結構組成&#xff1a;電阻負載柜主要由變壓器、調壓器、電阻器、控制器、保護裝置等部分組成。其中&#xf…