Răsfoiți Sursa

update 简化 全局线程池配置 使用cpu核心数自动处理

疯狂的狮子li 2 ani în urmă
părinte
comite
83cdeacaa8

+ 0 - 10
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:

+ 0 - 26
ruoyi-common/src/main/java/com/ruoyi/common/enums/ThreadPoolRejectedPolicy.java

@@ -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<? extends RejectedExecutionHandler> clazz;
-
-}

+ 9 - 7
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

+ 0 - 16
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;
-
 }