|
|
|
@ -0,0 +1,34 @@
|
|
|
|
|
package com.glxp.api.task;
|
|
|
|
|
|
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
|
|
|
|
|
import org.springframework.context.annotation.Configuration;
|
|
|
|
|
import org.springframework.scheduling.annotation.AsyncConfigurer;
|
|
|
|
|
import org.springframework.scheduling.annotation.EnableAsync;
|
|
|
|
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
|
|
|
|
|
|
|
|
|
import java.lang.reflect.Method;
|
|
|
|
|
import java.util.concurrent.Executor;
|
|
|
|
|
|
|
|
|
|
@EnableAsync
|
|
|
|
|
@Configuration
|
|
|
|
|
public class TaskExecutorConfig implements AsyncConfigurer {
|
|
|
|
|
|
|
|
|
|
private static final Logger log = LoggerFactory.getLogger(TaskExecutorConfig.class);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Executor getAsyncExecutor() {
|
|
|
|
|
ThreadPoolTaskExecutor threadPool = new ThreadPoolTaskExecutor();
|
|
|
|
|
threadPool.setCorePoolSize(10);//当前线程数
|
|
|
|
|
threadPool.setMaxPoolSize(20);// 最大线程数
|
|
|
|
|
threadPool.setQueueCapacity(5);//线程池所使用的缓冲队列
|
|
|
|
|
threadPool.setWaitForTasksToCompleteOnShutdown(true);//等待任务在关机时完成--表明等待所有线程执行完
|
|
|
|
|
threadPool.setAwaitTerminationSeconds(60 * 15);// 等待时间 (默认为0,此时立即停止),并没等待xx秒后强制停止
|
|
|
|
|
threadPool.setThreadNamePrefix("MyAsync-");// 线程名称前缀
|
|
|
|
|
threadPool.initialize(); // 初始化
|
|
|
|
|
return threadPool;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|