疯狂的狮子li
2021-09-02 f3d6d1e43bae088f7f2b85b629c951474cebe256
update 优化全局线程池配置 使用泛型 防止错误输入
已修改3个文件
已添加1个文件
57 ■■■■■ 文件已修改
ruoyi-admin/src/main/resources/application.yml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/enums/ThreadPoolRejectedPolicy.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/ThreadPoolProperties.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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:
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;
}
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;
    }
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;
}