Spring Boot 線程池配置詳解
一、核心配置參數及作用
- 基礎參數
核心線程數 (corePoolSize)?
作用?:線程池中始終保持存活的線程數量,即使空閑也不回收?。
建議?:根據任務類型設定(如 I/O 密集型任務可設為 CPU 核心數 × 2)?。
最大線程數 (maxPoolSize)?
作用?:線程池允許創建的最大線程數,僅在隊列滿時觸發擴容?。
建議?:設置為核心線程數的 2~3 倍,避免資源耗盡?。
隊列容量 (queueCapacity)?
作用?:任務緩沖隊列的大小,決定線程池的請求處理能力?。
建議?:
有界隊列?(如 LinkedBlockingQueue):限制資源占用,防止內存溢出?。
無界隊列?:僅適用于任務量可控且無突發流量的場景?。
線程存活時間 (keepAliveSeconds)?
作用?:非核心線程空閑時的最大存活時間(單位:秒)?。
建議?:設為 60~120 秒,平衡資源回收效率與頻繁創建的開銷?。
2. 高級配置
線程名稱前綴?
作用?:標識線程池類型,便于監控和日志排查?。
示例?:
properties
Copy Code
spring.task.execution.thread-name-prefix=my-thread-
拒絕策略 (RejectedExecutionHandler)?
作用?:隊列和線程池均滿時的處理策略?。
常見策略?:
策略名 行為 適用場景
AbortPolicy 拋出異常拒絕新任務 嚴格保障任務不丟失
DiscardOldestPolicy 丟棄隊列最舊任務并重試提交 高頻請求場景(如實時處理)
CallerRunsPolicy 由提交任務的線程直接執行 限流場景
二、配置方式
- 配置文件(application.properties/yml)
spring.task.execution