From f3d6d1e43bae088f7f2b85b629c951474cebe256 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期四, 02 九月 2021 15:20:31 +0800 Subject: [PATCH] update 优化全局线程池配置 使用泛型 防止错误输入 --- ruoyi-common/src/main/java/com/ruoyi/common/enums/ThreadPoolRejectedPolicy.java | 26 ++++++++++++++++++++++++++ ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/ThreadPoolProperties.java | 3 ++- ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java | 18 ++---------------- ruoyi-admin/src/main/resources/application.yml | 10 +++++----- 4 files changed, 35 insertions(+), 22 deletions(-) diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 6363e47..d94ca65 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -246,11 +246,11 @@ # 绾跨▼姹犵淮鎶ょ嚎绋嬫墍鍏佽鐨勭┖闂叉椂闂� keepAliveSeconds: 300 # 绾跨▼姹犲鎷掔粷浠诲姟(鏃犵嚎绋嬪彲鐢�)鐨勫鐞嗙瓥鐣� - # CallerRunsPolicy 绛夊緟 - # DiscardOldestPolicy 鏀惧純鏈�鏃х殑 - # DiscardPolicy 涓㈠純 - # AbortPolicy 涓 - rejectedExecutionHandler: CallerRunsPolicy + # CALLER_RUNS_POLICY 绛夊緟 + # DISCARD_OLDEST_POLICY 鏀惧純鏈�鏃х殑 + # DISCARD_POLICY 涓㈠純 + # ABORT_POLICY 涓 + rejectedExecutionHandler: CALLER_RUNS_POLICY # feign 鐩稿叧閰嶇疆 feign: diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/ThreadPoolRejectedPolicy.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/ThreadPoolRejectedPolicy.java new file mode 100644 index 0000000..0c40f34 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/ThreadPoolRejectedPolicy.java @@ -0,0 +1,26 @@ +package com.ruoyi.common.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.concurrent.RejectedExecutionHandler; +import java.util.concurrent.ThreadPoolExecutor; + +/** + * 绾跨▼姹� 鎷掔粷绛栫暐 娉涘瀷 + * + * @author Lion Li + */ +@Getter +@AllArgsConstructor +public enum ThreadPoolRejectedPolicy { + + CALLER_RUNS_POLICY("绛夊緟", ThreadPoolExecutor.CallerRunsPolicy.class), + DISCARD_OLDEST_POLICY("鏀惧純鏈�鏃х殑", ThreadPoolExecutor.DiscardOldestPolicy.class), + DISCARD_POLICY("涓㈠純", ThreadPoolExecutor.DiscardPolicy.class), + ABORT_POLICY("涓", ThreadPoolExecutor.AbortPolicy.class); + + private final String name; + private final Class<? extends RejectedExecutionHandler> clazz; + +} 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 7758e97..5dd2b5f 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,6 +1,7 @@ package com.ruoyi.framework.config; import com.ruoyi.common.utils.Threads; +import com.ruoyi.common.utils.reflect.ReflectUtils; import com.ruoyi.framework.config.properties.ThreadPoolProperties; import org.apache.commons.lang3.concurrent.BasicThreadFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -12,7 +13,6 @@ import java.util.concurrent.RejectedExecutionHandler; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledThreadPoolExecutor; -import java.util.concurrent.ThreadPoolExecutor; /** * 绾跨▼姹犻厤缃� @@ -33,21 +33,7 @@ executor.setCorePoolSize(threadPoolProperties.getCorePoolSize()); executor.setQueueCapacity(threadPoolProperties.getQueueCapacity()); executor.setKeepAliveSeconds(threadPoolProperties.getKeepAliveSeconds()); - RejectedExecutionHandler handler; - switch (threadPoolProperties.getRejectedExecutionHandler()) { - case "CallerRunsPolicy": - handler = new ThreadPoolExecutor.CallerRunsPolicy(); - break; - case "DiscardOldestPolicy": - handler = new ThreadPoolExecutor.DiscardOldestPolicy(); - break; - case "DiscardPolicy": - handler = new ThreadPoolExecutor.DiscardPolicy(); - break; - default: - handler = new ThreadPoolExecutor.AbortPolicy(); - break; - } + RejectedExecutionHandler handler = ReflectUtils.newInstance(threadPoolProperties.getRejectedExecutionHandler().getClazz()); executor.setRejectedExecutionHandler(handler); return executor; } diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/ThreadPoolProperties.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/ThreadPoolProperties.java index 08b6842..fbffc0f 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/ThreadPoolProperties.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/ThreadPoolProperties.java @@ -1,5 +1,6 @@ package com.ruoyi.framework.config.properties; +import com.ruoyi.common.enums.ThreadPoolRejectedPolicy; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @@ -42,6 +43,6 @@ /** * 绾跨▼姹犲鎷掔粷浠诲姟(鏃犵嚎绋嬪彲鐢�)鐨勫鐞嗙瓥鐣� */ - private String rejectedExecutionHandler; + private ThreadPoolRejectedPolicy rejectedExecutionHandler; } -- Gitblit v1.9.3