From 83cdeacaa88461fdc83921864c34770252b7d0b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90li?= <15040126243@163.com> Date: Fri, 22 Apr 2022 12:06:56 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E7=AE=80=E5=8C=96=20=E5=85=A8?= =?UTF-8?q?=E5=B1=80=E7=BA=BF=E7=A8=8B=E6=B1=A0=E9=85=8D=E7=BD=AE=20?= =?UTF-8?q?=E4=BD=BF=E7=94=A8cpu=E6=A0=B8=E5=BF=83=E6=95=B0=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application.yml | 10 ------- .../enums/ThreadPoolRejectedPolicy.java | 26 ------------------- .../framework/config/ThreadPoolConfig.java | 16 +++++++----- .../properties/ThreadPoolProperties.java | 16 ------------ 4 files changed, 9 insertions(+), 59 deletions(-) delete mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/ThreadPoolRejectedPolicy.java diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 9c1fab15f..3d84371fe 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -256,20 +256,10 @@ xss: thread-pool: # 是否开启线程池 enabled: false - # 核心线程池大小 - corePoolSize: 8 - # 最大可创建的线程数 - maxPoolSize: 16 # 队列最大长度 queueCapacity: 128 # 线程池维护线程所允许的空闲时间 keepAliveSeconds: 300 - # 线程池对拒绝任务(无线程可用)的处理策略 - # CALLER_RUNS_POLICY 调用方执行 - # DISCARD_OLDEST_POLICY 放弃最旧的 - # DISCARD_POLICY 丢弃 - # ABORT_POLICY 中止 - rejectedExecutionHandler: CALLER_RUNS_POLICY --- # redisson 缓存配置 redisson: 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 deleted file mode 100644 index 5529bb336..000000000 --- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/ThreadPoolRejectedPolicy.java +++ /dev/null @@ -1,26 +0,0 @@ -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 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 f6e07fedc..ebf236c87 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,7 +1,6 @@ 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; @@ -10,7 +9,6 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; -import java.util.concurrent.RejectedExecutionHandler; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.ThreadPoolExecutor; @@ -23,6 +21,11 @@ import java.util.concurrent.ThreadPoolExecutor; @Configuration public class ThreadPoolConfig { + /** + * 核心线程数 = cpu 核心数 + 1 + */ + private final int core = Runtime.getRuntime().availableProcessors() + 1; + @Autowired private ThreadPoolProperties threadPoolProperties; @@ -30,12 +33,11 @@ public class ThreadPoolConfig { @ConditionalOnProperty(prefix = "thread-pool", name = "enabled", havingValue = "true") public ThreadPoolTaskExecutor threadPoolTaskExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); - executor.setMaxPoolSize(threadPoolProperties.getMaxPoolSize()); - executor.setCorePoolSize(threadPoolProperties.getCorePoolSize()); + executor.setMaxPoolSize(core); + executor.setCorePoolSize(core * 2); executor.setQueueCapacity(threadPoolProperties.getQueueCapacity()); executor.setKeepAliveSeconds(threadPoolProperties.getKeepAliveSeconds()); - RejectedExecutionHandler handler = ReflectUtils.newInstance(threadPoolProperties.getRejectedExecutionHandler().getClazz()); - executor.setRejectedExecutionHandler(handler); + executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); return executor; } @@ -44,7 +46,7 @@ public class ThreadPoolConfig { */ @Bean(name = "scheduledExecutorService") protected ScheduledExecutorService scheduledExecutorService() { - return new ScheduledThreadPoolExecutor(threadPoolProperties.getCorePoolSize(), + return new ScheduledThreadPoolExecutor(core, new BasicThreadFactory.Builder().namingPattern("schedule-pool-%d").daemon(true).build(), new ThreadPoolExecutor.CallerRunsPolicy()) { @Override 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 fbffc0f45..fe0673321 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,6 +1,5 @@ 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; @@ -20,16 +19,6 @@ public class ThreadPoolProperties { */ private boolean enabled; - /** - * 核心线程池大小 - */ - private int corePoolSize; - - /** - * 最大可创建的线程数 - */ - private int maxPoolSize; - /** * 队列最大长度 */ @@ -40,9 +29,4 @@ public class ThreadPoolProperties { */ private int keepAliveSeconds; - /** - * 线程池对拒绝任务(无线程可用)的处理策略 - */ - private ThreadPoolRejectedPolicy rejectedExecutionHandler; - }