From 15fdb9b2183a4c36b4036e419107fc4571507720 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期二, 11 五月 2021 17:37:27 +0800 Subject: [PATCH] !32 版本更新 v1.0.1 Merge pull request !32 from 疯狂的狮子li/dev --- ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java | 60 +++++++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 39 insertions(+), 21 deletions(-) diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java index 0d67c22..30d5ef9 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java @@ -1,44 +1,65 @@ package com.ruoyi.framework.config; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ScheduledThreadPoolExecutor; -import java.util.concurrent.ThreadPoolExecutor; +import com.ruoyi.common.utils.Threads; import org.apache.commons.lang3.concurrent.BasicThreadFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; -import com.ruoyi.common.utils.Threads; + +import java.util.concurrent.RejectedExecutionHandler; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledThreadPoolExecutor; +import java.util.concurrent.ThreadPoolExecutor; /** * 绾跨▼姹犻厤缃� * - * @author ruoyi + * @author Lion Li **/ @Configuration -public class ThreadPoolConfig -{ +public class ThreadPoolConfig { + // 鏍稿績绾跨▼姹犲ぇ灏� - private int corePoolSize = 50; + @Value("${threadPoolConfig.corePoolSize}") + private int corePoolSize; // 鏈�澶у彲鍒涘缓鐨勭嚎绋嬫暟 - private int maxPoolSize = 200; + @Value("${threadPoolConfig.maxPoolSize}") + private int maxPoolSize; // 闃熷垪鏈�澶ч暱搴� - private int queueCapacity = 1000; + @Value("${threadPoolConfig.queueCapacity}") + private int queueCapacity; // 绾跨▼姹犵淮鎶ょ嚎绋嬫墍鍏佽鐨勭┖闂叉椂闂� - private int keepAliveSeconds = 300; + @Value("${threadPoolConfig.keepAliveSeconds}") + private int keepAliveSeconds; + + // 绾跨▼姹犲鎷掔粷浠诲姟(鏃犵嚎绋嬪彲鐢�)鐨勫鐞嗙瓥鐣� + @Value("${threadPoolConfig.rejectedExecutionHandler}") + private String rejectedExecutionHandler; @Bean(name = "threadPoolTaskExecutor") - public ThreadPoolTaskExecutor threadPoolTaskExecutor() - { + @ConditionalOnProperty(prefix = "threadPoolTaskExecutor", name = "enabled", havingValue = "true") + public ThreadPoolTaskExecutor threadPoolTaskExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setMaxPoolSize(maxPoolSize); executor.setCorePoolSize(corePoolSize); executor.setQueueCapacity(queueCapacity); executor.setKeepAliveSeconds(keepAliveSeconds); - // 绾跨▼姹犲鎷掔粷浠诲姟(鏃犵嚎绋嬪彲鐢�)鐨勫鐞嗙瓥鐣� - executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); + RejectedExecutionHandler handler; + if (rejectedExecutionHandler.equals("CallerRunsPolicy")) { + handler = new ThreadPoolExecutor.CallerRunsPolicy(); + } else if (rejectedExecutionHandler.equals("DiscardOldestPolicy")) { + handler = new ThreadPoolExecutor.DiscardOldestPolicy(); + } else if (rejectedExecutionHandler.equals("DiscardPolicy")) { + handler = new ThreadPoolExecutor.DiscardPolicy(); + } else { + handler = new ThreadPoolExecutor.AbortPolicy(); + } + executor.setRejectedExecutionHandler(handler); return executor; } @@ -46,14 +67,11 @@ * 鎵ц鍛ㄦ湡鎬ф垨瀹氭椂浠诲姟 */ @Bean(name = "scheduledExecutorService") - protected ScheduledExecutorService scheduledExecutorService() - { + protected ScheduledExecutorService scheduledExecutorService() { return new ScheduledThreadPoolExecutor(corePoolSize, - new BasicThreadFactory.Builder().namingPattern("schedule-pool-%d").daemon(true).build()) - { + new BasicThreadFactory.Builder().namingPattern("schedule-pool-%d").daemon(true).build()) { @Override - protected void afterExecute(Runnable r, Throwable t) - { + protected void afterExecute(Runnable r, Throwable t) { super.afterExecute(r, t); Threads.printException(r, t); } -- Gitblit v1.9.3