diff --git a/boot-web/src/main/java/com/xwbing/configuration/ApplicationContextConfig.java b/boot-web/src/main/java/com/xwbing/configuration/ApplicationContextConfig.java index 32d7c68..8fe6c1e 100644 --- a/boot-web/src/main/java/com/xwbing/configuration/ApplicationContextConfig.java +++ b/boot-web/src/main/java/com/xwbing/configuration/ApplicationContextConfig.java @@ -8,6 +8,8 @@ import org.springframework.web.filter.CharacterEncodingFilter; import org.springframework.web.multipart.commons.CommonsMultipartResolver; import javax.servlet.Filter; +import java.util.concurrent.RejectedExecutionHandler; +import java.util.concurrent.ThreadPoolExecutor; /** * 说明: 程序上下文配置 @@ -48,16 +50,24 @@ public class ApplicationContextConfig { /** * 任务线程池 + * 无线程可用的处理策略: + * AbortPolicy(默认) 抛出RejectedExecutionException + * CallerRunsPolicy 调用者的线程会执行该任务,如果执行器已关闭,则丢弃 + * DiscardPolicy 不能执行的任务将被丢弃 + * DiscardOldestPolicy 如果执行任务尚未关闭,则位于工作队列头部的任务将被删除,然后重试执行程序(如果再次失败,则重复此过程) * * @return */ @Bean(name = "taskExecutor") public ThreadPoolTaskExecutor getPoolTaskExecutor() { ThreadPoolTaskExecutor poolTaskExecutor = new ThreadPoolTaskExecutor(); - poolTaskExecutor.setCorePoolSize(5);//核心线程数 - poolTaskExecutor.setMaxPoolSize(1000);//最大线程数 poolTaskExecutor.setKeepAliveSeconds(30000);//空闲线程的存活时间 - poolTaskExecutor.setQueueCapacity(200);//队列最大长度 + poolTaskExecutor.setCorePoolSize(5);//核心线程数 + poolTaskExecutor.setQueueCapacity(200);//任务队列最大长度 + poolTaskExecutor.setMaxPoolSize(1000);//最大线程数 + //拒绝任务的处理策略 + RejectedExecutionHandler reject = new ThreadPoolExecutor.CallerRunsPolicy(); + poolTaskExecutor.setRejectedExecutionHandler(reject); return poolTaskExecutor; } }