|  |  |  | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | @Configuration | 
|---|
|  |  |  | @EnableAsync(proxyTargetClass = true) | 
|---|
|  |  |  | public class AsyncConfiguration { | 
|---|
|  |  |  | @Bean("loginExecutor") | 
|---|
|  |  |  | public Executor executor(){ | 
|---|
|  |  |  | ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); | 
|---|
|  |  |  | //配置核心线程数 | 
|---|
|  |  |  | executor.setCorePoolSize(15); | 
|---|
|  |  |  | //配置最大线程数 | 
|---|
|  |  |  | executor.setMaxPoolSize(30); | 
|---|
|  |  |  | //配置队列大小 | 
|---|
|  |  |  | executor.setQueueCapacity(1000); | 
|---|
|  |  |  | //线程的名称前缀 | 
|---|
|  |  |  | executor.setThreadNamePrefix("loginExecutor-"); | 
|---|
|  |  |  | //线程活跃时间(秒) | 
|---|
|  |  |  | //executor.setKeepAliveSeconds(60); | 
|---|
|  |  |  | //等待所有任务结束后再关闭线程池 | 
|---|
|  |  |  | executor.setWaitForTasksToCompleteOnShutdown(true); | 
|---|
|  |  |  | //设置拒绝策略 | 
|---|
|  |  |  | //executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); | 
|---|
|  |  |  | //执行初始化 | 
|---|
|  |  |  | executor.initialize(); | 
|---|
|  |  |  | return executor; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | @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(15); | 
|---|
|  |  |  | executor.setCorePoolSize(corePoolSize); | 
|---|
|  |  |  | //配置最大线程数 | 
|---|
|  |  |  | executor.setMaxPoolSize(30); | 
|---|
|  |  |  | executor.setMaxPoolSize(maxPoolSize); | 
|---|
|  |  |  | //配置队列大小 | 
|---|
|  |  |  | executor.setQueueCapacity(1000); | 
|---|
|  |  |  | executor.setQueueCapacity(queueCapacity); | 
|---|
|  |  |  | //线程的名称前缀 | 
|---|
|  |  |  | executor.setThreadNamePrefix("alarmExecutor-"); | 
|---|
|  |  |  | //线程活跃时间(秒) | 
|---|
|  |  |  | //executor.setKeepAliveSeconds(60); | 
|---|
|  |  |  | executor.setKeepAliveSeconds(keepAliveSeconds); | 
|---|
|  |  |  | //等待所有任务结束后再关闭线程池 | 
|---|
|  |  |  | executor.setWaitForTasksToCompleteOnShutdown(true); | 
|---|
|  |  |  | //设置拒绝策略 | 
|---|
|  |  |  | //executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); | 
|---|
|  |  |  | executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); | 
|---|
|  |  |  | //执行初始化 | 
|---|
|  |  |  | executor.initialize(); | 
|---|
|  |  |  | return executor; | 
|---|