From 56a2b600bca3844e3f258a022ae928b4fc18db3e Mon Sep 17 00:00:00 2001 From: wkc <978997012@qq.com> Date: Thu, 5 Mar 2026 09:35:13 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=BC=82=E6=AD=A5?= =?UTF-8?q?=E7=BA=BF=E7=A8=8B=E6=B1=A0=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project/config/AsyncThreadPoolConfig.java | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 ccdi-project/src/main/java/com/ruoyi/ccdi/project/config/AsyncThreadPoolConfig.java diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/config/AsyncThreadPoolConfig.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/config/AsyncThreadPoolConfig.java new file mode 100644 index 0000000..725dc07 --- /dev/null +++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/config/AsyncThreadPoolConfig.java @@ -0,0 +1,48 @@ +package com.ruoyi.ccdi.project.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; +import java.util.concurrent.ThreadPoolExecutor; + +/** + * 异步线程池配置 + * + * @author ruoyi + * @date 2026-03-05 + */ +@Configuration +@EnableAsync +public class AsyncThreadPoolConfig { + + /** + * 文件上传专用线程池 + * 容量:100个线程 + * 拒绝策略:AbortPolicy(直接拒绝,由调度线程捕获并重试) + */ + @Bean("fileUploadExecutor") + public Executor fileUploadExecutor() { + ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); + // 核心线程数 + executor.setCorePoolSize(100); + // 最大线程数 + executor.setMaxPoolSize(100); + // 队列容量(设为0,不使用队列,直接走拒绝策略) + executor.setQueueCapacity(0); + // 线程名称前缀 + executor.setThreadNamePrefix("file-upload-"); + // 拒绝策略:AbortPolicy,抛出 RejectedExecutionException + executor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy()); + // 线程空闲时间(秒) + executor.setKeepAliveSeconds(60); + // 等待所有任务完成后再关闭 + executor.setWaitForTasksToCompleteOnShutdown(true); + // 最长等待时间 + executor.setAwaitTerminationSeconds(60); + executor.initialize(); + return executor; + } +}