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; - }