package com.ruoyi.alarm.config; import com.google.errorprone.annotations.Var; import org.springframework.beans.factory.annotation.Value; 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; /** * @ClassName: AsyncConfiguration * @Description: 异步线程配置类 * @Author: Administrator * @Date: 2023年02月03日 11:25 * @Version: 1.0 **/ @Configuration @EnableAsync(proxyTargetClass = true) public class AsyncConfiguration { @Value("${ThreadPoolTask.corePoolSize}") Integer corePoolSize; @Value("${ThreadPoolTask.maxPoolSize}") Integer maxPoolSize; @Value("${ThreadPoolTask.keepAliveSeconds}") Integer keepAliveSeconds; @Value("${ThreadPoolTask.queueCapacity}") Integer queueCapacity; @Bean("alarmExecutor") public Executor alarmExecutor(){ ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); //配置核心线程数 executor.setCorePoolSize(corePoolSize); //配置最大线程数 executor.setMaxPoolSize(maxPoolSize); //配置队列大小 executor.setQueueCapacity(queueCapacity); //线程的名称前缀 executor.setThreadNamePrefix("alarmExecutor-"); //线程活跃时间(秒) executor.setKeepAliveSeconds(keepAliveSeconds); //等待所有任务结束后再关闭线程池 executor.setWaitForTasksToCompleteOnShutdown(true); //设置拒绝策略 executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); //执行初始化 executor.initialize(); return executor; } @Bean("loginExecutor") public Executor loginExecutor(){ ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); //配置核心线程数 executor.setCorePoolSize(corePoolSize); //配置最大线程数 executor.setMaxPoolSize(maxPoolSize); //配置队列大小 executor.setQueueCapacity(queueCapacity); //线程的名称前缀 executor.setThreadNamePrefix("loginExecutor-"); //线程活跃时间(秒) executor.setKeepAliveSeconds(keepAliveSeconds); //等待所有任务结束后再关闭线程池 executor.setWaitForTasksToCompleteOnShutdown(true); //设置拒绝策略 executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); //执行初始化 executor.initialize(); return executor; } }