|
|
@@ -0,0 +1,35 @@
|
|
|
+package com.uas.eis.core.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;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @Author: zhouy
|
|
|
+ * @Date: 2020/5/22 13:43
|
|
|
+ */
|
|
|
+@Configuration
|
|
|
+@EnableAsync // 启用异步任务
|
|
|
+public class AsyncConfig{
|
|
|
+ // 声明一个线程池(并指定线程池的名字)
|
|
|
+ @Bean("taskExecutor")
|
|
|
+ public Executor asyncExecutor() {
|
|
|
+ ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
|
|
|
+ //核心线程数10:线程池创建时候初始化的线程数
|
|
|
+ executor.setCorePoolSize(5);
|
|
|
+ //最大线程数20:线程池最大的线程数,只有在缓冲队列满了之后才会申请超过核心线程数的线程
|
|
|
+ executor.setMaxPoolSize(5);
|
|
|
+ //缓冲队列500:用来缓冲执行任务的队列
|
|
|
+ executor.setQueueCapacity(500);
|
|
|
+ //允许线程的空闲时间60秒:当超过了核心线程出之外的线程在空闲时间到达之后会被销毁
|
|
|
+ executor.setKeepAliveSeconds(60);
|
|
|
+ //线程池名的前缀:设置好了之后可以方便我们定位处理任务所在的线程池
|
|
|
+ executor.setThreadNamePrefix("DailyAsync-");
|
|
|
+ //所有任务处理完毕开始关闭线程池
|
|
|
+ executor.setWaitForTasksToCompleteOnShutdown(true);
|
|
|
+ executor.initialize();
|
|
|
+ return executor;
|
|
|
+ }
|
|
|
+}
|