Spring配置線程池開啟異步任務

一、單純使用@Async注解。

1、@Async注解在使用時,如果不指定線程池的名稱,則使用Spring默認的線程池,Spring默認的線程池為SimpleAsyncTaskExecutor。

2、方法上一旦標記了這個@Async注解,當其它線程調用這個方法時,就會開啟一個新的子線程去異步處理該業務邏輯。

Spring默認的線程池配置為:

核心線程數 (corePoolSize): 8
最大線程數 (maxPoolSize): Integer.MAX_VALUE (無限制)
任務等待隊列容量 (queueCapacity): Integer.MAX_VALUE (無限制)
空閑線程等待時間?(keepAliveSeconds): 60秒(超過這個時間沒有任務調度,則線程會被回收)
線程池拒絕策略 (RejectedExecutionHandler): AbortPolicy(默認策略,超出線程池容量和隊列容量時拋出RejectedExecutionException異常)

缺點:并發情況下,會無限創建線程。自定義配置參數可以解決該問題。

在配置文件中配置即可:

spirng:task:execution:# 線程名稱前綴thread-name-prefix:pool:# 最大線程數,默認為Integer.MAX_VALUEmax-size:# 核心線程數,默認為8core-size:# 空閑線程等待時間,默認為60s。如果超過這個時間沒有任務調度,則線程會被回收keep-alive:# 任務等待隊列容量,默認為Integer.MAX_VALUE 無限制queue-capacity:# 是否允許回收空閑的線程,默認為trueallow-core-thread-timeout:

二、如果需要更加精確地控制線程池的參數,您也可以在配置類中自定義一個?ThreadPoolTaskExecutor?bean,并根據具體需求設置相應的參數。

配置類如下:

@Configuration
public class ThreadPoolConfig {@Bean("myExecutor")public Executor taskExecutor() {ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();//設置線程池參數信息taskExecutor.setCorePoolSize(10);taskExecutor.setMaxPoolSize(50);taskExecutor.setQueueCapacity(200);taskExecutor.setKeepAliveSeconds(60);taskExecutor.setThreadNamePrefix("myExecutor--");taskExecutor.setWaitForTasksToCompleteOnShutdown(true);//線程池中任務等待時間,超過等待時間直接銷毀taskExecutor.setAwaitTerminationSeconds(60);//修改拒絕策略為使用當前線程執行taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());//初始化線程池taskExecutor.initialize();return taskExecutor;}
}

可配合@Async注解使用:

@Async("myExecutor")
public void hello(String name){logger.info("異步線程啟動 started."+name);
}

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

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

相關文章

AI數據倉庫優化數據管理

內容概要AI數據倉庫代表了現代企業數據管理的重大演進,它超越了傳統數據倉庫的范疇。其核心在于利用人工智能技術,特別是機器學習和深度學習算法,來智能化地處理從多源數據整合到最終價值提取的全過程。這種新型倉庫不僅能高效地統一存儲來自…

SpringMVC(詳細版從入門到精通)未完

SpringMVC介紹 MVC模型 MVC全稱Model View Controller,是一種設計創建Web應用程序的模式。這三個單詞分別代表Web應用程序的三個部分: Model(模型):指數據模型。用于存儲數據以及處理用戶請求的業務邏輯。在Web應用中,JavaBean對象,業務模型等都屬于Model。 View(視圖…

vue3運行機制同tkinter做類比

把剛才“Vue3 蓋別墅”的故事,和 Python 的 tkinter 做一個“一一對應”的翻譯,你就能瞬間明白兩件事的異同。 為了直觀,用同一棟房子比喻: Vue3 的“網頁” ? tkinter 的“桌面窗口”瀏覽器 ? Python 解釋器 Tcl/Tk 引擎 下面…

Fastadmin后臺列表導出到表格

html中添加按鈕<a href"javascript:;" class"btn btn-success btn-export" title"{:__(導出數據)}" ><i class"fa fa-cloud-download"></i> {:__(導出數據)}</a>對應的js添加代碼處理點擊事件&#xff0c;添加…

Nginx反向代理與緩存實現

1. Nginx反向代理核心配置解析 1.1 反向代理基礎配置結構 Nginx反向代理的基礎配置結構主要包括server塊和location塊的配置。一個典型的反向代理配置示例如下&#xff1a; server {listen 80;server_name example.com;location / {proxy_pass http://backend_servers;proxy_se…

第2節 如何計算神經網絡的參數:AI入門核心邏輯詳解

?? 核心目標:找到最佳w和b! 上期咱們聊了神經網絡就是復雜的"線性變換+激活函數套娃",今天的重頭戲就是:怎么算出讓模型完美擬合數據的w(權重)和b(偏置)!先從最簡單的線性函數說起,一步步揭開神秘面紗 那么如何計算w和b呢?首先明確我們需要的w和b能夠讓…

AutoSar AP平臺功能組并行運行原理

在 AUTOSAR Adaptive Platform&#xff08;AP&#xff09;中&#xff0c;同一個機器上可以同時運行多個功能組&#xff08;Function Groups&#xff09;&#xff0c;即使是在單核CPU環境下。其調度機制與進程調度既相似又存在關鍵差異&#xff0c;具體實現如下&#xff1a;功能…

linux服務器查看某個服務啟動,運行的時間

一 查看服務啟動運行時間1.1 查看啟動時間查看啟動時間&#xff08;精確到秒&#xff09;&#xff1a;ps -p <PID> -o lstart例子如下&#xff1a;ps -p 1234 -o lstart1.2 查詢運行時長ps -p <PID> -o etimeps -p 1234 -o etime1.3 總結

【JS 性能】前端性能優化基石:深入理解防抖(Debounce)與節流(Throttle)

【JS 性能】前端性能優化基石&#xff1a;深入理解防抖&#xff08;Debounce&#xff09;與節流&#xff08;Throttle&#xff09; 所屬專欄&#xff1a; 《前端小技巧集合&#xff1a;讓你的代碼更優雅高效》 上一篇&#xff1a; 【JS 語法】代碼整潔之道&#xff1a;解構賦值…

線性代數 · 直觀理解矩陣 | 空間變換 / 特征值 / 特征向量

注&#xff1a;本文為 “線性代數 直觀理解矩陣” 相關合輯。 英文引文&#xff0c;機翻未校。 如有內容異常&#xff0c;請看原文。 Understanding matrices intuitively, part 1 直觀理解矩陣&#xff08;第一部分&#xff09; 333 March 201120112011 William Gould Intr…

設計模式基礎概念(行為模式):策略模式

概述 策略模式是一種行為設計模式&#xff0c; 它能讓你定義一系列算法&#xff0c; 并將每種算法分別放入獨立的類中&#xff0c; 以使算法的對象能夠相互替換。 主要目的是通過定義相似的算法&#xff0c;替換if else 語句寫法&#xff0c;并且可以隨時相互替換 結構示例 策略…

功能組和功能組狀態的概念關系和區別

在 AUTOSAR Adaptive Platform 中&#xff0c;功能組&#xff08;Function Group&#xff0c;FG&#xff09; 和 功能組狀態&#xff08;Function Group State&#xff09; 是狀態管理&#xff08;SM&#xff09;的核心概念&#xff0c;二者構成靜態邏輯單元與動態行為模式的協…

力扣326:3的冪

力扣326:3的冪題目思路代碼題目 給定一個整數&#xff0c;寫一個函數來判斷它是否是 3 的冪次方。如果是&#xff0c;返回 true &#xff1b;否則&#xff0c;返回 false 。 整數 n 是 3 的冪次方需滿足&#xff1a;存在整數 x 使得 n 3^x 思路 想要是三的冪次方的話將這個…

前瞻性技術驅動,楓清科技助力制造企業借助大模型完成生產力轉化

麥肯錫于近期發布的《技術趨勢展望2025》更清晰地定義了AI的角色與發展方向。報告在不止一個章節總結了基礎模型加速小型化的趨勢&#xff0c;多模態融合成為主流&#xff1a;企業的模型利用從追求“大而全”轉向“小而精”&#xff0c;高效專用小模型成本降低90%的同時保持性能…

如何遠程連接云服務器上mysql

一&#xff1a;使用系統命令查看端口占用# 查看MySQL進程及其端口sudo netstat -tlnp | grep mysql# 或者使用ss命令sudo ss -tlnp | grep mysql# 查看3306端口&#xff08;MySQL默認端口&#xff09;sudo netstat -tlnp | grep 3306出現如下信息&#xff0c;說明端口3306[root…

今日分享:C++模板(全詳解)

&#x1f60e;【博客主頁&#xff1a;你最愛的小傻瓜】&#x1f60e; &#x1f914;【本文內容&#xff1a;C模板 &#x1f60d; 】&#x1f914; -------------------------------------------------------------------------------------------------------------------…

ramdisk內存虛擬盤(一)——前世今生

1990 年代&#xff1a;前因——“硬盤太慢、驅動太多” 背景&#xff1a;早期 Linux 根文件系統要么在軟盤、要么在 IDE 硬盤&#xff0c;內核把對應的軟盤/IDE 驅動編進去即可順利掛載。矛盾出現&#xff1a;隨著 SCSI、PCMCIA、USB、RAID 控制器等百花齊放&#xff0c;如果把…

ETH持續上漲推動DEX熱潮,交易活躍度飆升的XBIT表現強勢出圈

BOSS Wallet 8月15日訊&#xff0c;隨著ETH價格在過去24小時內強勢拉升至4300美元&#xff0c;整個加密市場再度掀起漲勢狂潮&#xff0c;鏈上交易活躍度空前高漲。其中&#xff0c;去中心化交易所平臺迅速成為市場焦點&#xff0c;其平臺活躍度與交易量雙雙上漲&#xff0c;吸…

Stand-In - 輕量級人物一致性視頻生成 高保真視頻人臉交換 ComfyUI工作流 支持50系顯卡 一鍵整合包下載

Stand-In 是一個輕量級、即插即用的身份保護視頻生成框架&#xff0c;只需要上傳一張人物照片&#xff0c;加上一段提示詞&#xff0c;即可生成高度一致性的高保真人物視頻&#xff0c;人臉相似度和自然都幾乎達到100%還原水平。 Stand-In 能把任何一張人臉&#xff08;甚至動漫…

vue3相關基礎

1、ref和reactive的區別兩者都是響應式數據的聲明。Reactive只適用于非基本數據類型&#xff0c;如對象&#xff0c;數組等。而ref是兼容適用于reactive的的數據類型的以及其他數據&#xff0c;靈活性較高。ref聲明的變量取值時需要.value。在<template></template>…