@EnableAsync @Configuration public class AsyncTaskExecutePoolConfig implements AsyncConfigurer {
public static final int CORE_POOL_SIZE = 20; private static final int MAX_POOL_SIZE = 50; private static final int QUEUE_CAPACITY = 100; private static final int KEEP_ALIVE_SECONDS = 30;
@Override @Bean(name = "asyncExecutor") public Executor getAsyncExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); //核心线程池大小 executor.setCorePoolSize(CORE_POOL_SIZE); //最大线程数 executor.setMaxPoolSize(MAX_POOL_SIZE); //队列容量 executor.setQueueCapacity(QUEUE_CAPACITY); //活跃时间 executor.setKeepAliveSeconds(KEEP_ALIVE_SECONDS); //设置线程池关闭的时候等待所有任务都完成再继续销毁其他的Bean executor.setWaitForTasksToCompleteOnShutdown(true); //线程名字前缀 executor.setThreadNamePrefix("workflow-async-"); // setRejectedExecutionHandler:当pool已经达到max size的时候,如何处理新任务 // CallerRunsPolicy:不在新线程中执行任务,而是由调用者所在的线程来执行 executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); executor.initialize(); return executor; }
2020/7/6下午更新maven包后项目启动报以下错误: Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [java.util.concurrent.Executor]: Illegal arguments to factory method ‘getAsyncExecutor’; args: ; nested exception is java.lang.IllegalArgumentException: object is not an instance of declaring class
解决:将implements AsyncConfigurer删除后ok