需要注意一下 ThreadPoolTaskExecutor 和 Executor 区别
@Configuration public class ExecutorConfig { /** Set the ThreadPoolExecutor's core pool size. */ private int corePoolSize = 10; /** Set the ThreadPoolExecutor's maximum pool size. */ private int maxPoolSize = 100; /** Set the capacity for the ThreadPoolExecutor's BlockingQueue. */ private int queueCapacity = 100; @Bean public ThreadPoolTaskExecutor callerRunsExecutorService() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(corePoolSize); executor.setMaxPoolSize(maxPoolSize); executor.setQueueCapacity(queueCapacity); executor.setThreadNamePrefix("RunsExecutor-"); // rejection-policy:当pool已经达到max size的时候,如何处理新任务 // CALLER_RUNS:不在新线程中执行任务,而是有调用者所在的线程来执行 executor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy()); executor.setKeepAliveSeconds(60); executor.initialize(); return executor; } @Bean("commonTaskExecutor") public Executor commonRunsAsync() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(corePoolSize); executor.setMaxPoolSize(maxPoolSize); executor.setQueueCapacity(queueCapacity); executor.setThreadNamePrefix("common---"); // rejection-policy:当pool已经达到max size的时候,如何处理新任务 // CALLER_RUNS:不在新线程中执行任务,而是有调用者所在的线程来执行 executor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy()); executor.setKeepAliveSeconds(60); executor.initialize(); return executor; } }