From 15fdb9b2183a4c36b4036e419107fc4571507720 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子li <15040126243@163.com>
Date: 星期二, 11 五月 2021 17:37:27 +0800
Subject: [PATCH] !32 版本更新 v1.0.1 Merge pull request !32 from 疯狂的狮子li/dev

---
 ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java |   60 +++++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 39 insertions(+), 21 deletions(-)

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 0d67c22..30d5ef9 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,44 +1,65 @@
 package com.ruoyi.framework.config;
 
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledThreadPoolExecutor;
-import java.util.concurrent.ThreadPoolExecutor;
+import com.ruoyi.common.utils.Threads;
 import org.apache.commons.lang3.concurrent.BasicThreadFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
-import com.ruoyi.common.utils.Threads;
+
+import java.util.concurrent.RejectedExecutionHandler;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledThreadPoolExecutor;
+import java.util.concurrent.ThreadPoolExecutor;
 
 /**
  * 绾跨▼姹犻厤缃�
  *
- * @author ruoyi
+ * @author Lion Li
  **/
 @Configuration
-public class ThreadPoolConfig
-{
+public class ThreadPoolConfig {
+
     // 鏍稿績绾跨▼姹犲ぇ灏�
-    private int corePoolSize = 50;
+    @Value("${threadPoolConfig.corePoolSize}")
+    private int corePoolSize;
 
     // 鏈�澶у彲鍒涘缓鐨勭嚎绋嬫暟
-    private int maxPoolSize = 200;
+    @Value("${threadPoolConfig.maxPoolSize}")
+    private int maxPoolSize;
 
     // 闃熷垪鏈�澶ч暱搴�
-    private int queueCapacity = 1000;
+    @Value("${threadPoolConfig.queueCapacity}")
+    private int queueCapacity;
 
     // 绾跨▼姹犵淮鎶ょ嚎绋嬫墍鍏佽鐨勭┖闂叉椂闂�
-    private int keepAliveSeconds = 300;
+    @Value("${threadPoolConfig.keepAliveSeconds}")
+    private int keepAliveSeconds;
+
+    // 绾跨▼姹犲鎷掔粷浠诲姟(鏃犵嚎绋嬪彲鐢�)鐨勫鐞嗙瓥鐣�
+    @Value("${threadPoolConfig.rejectedExecutionHandler}")
+    private String rejectedExecutionHandler;
 
     @Bean(name = "threadPoolTaskExecutor")
-    public ThreadPoolTaskExecutor threadPoolTaskExecutor()
-    {
+    @ConditionalOnProperty(prefix = "threadPoolTaskExecutor", name = "enabled", havingValue = "true")
+    public ThreadPoolTaskExecutor threadPoolTaskExecutor() {
         ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
         executor.setMaxPoolSize(maxPoolSize);
         executor.setCorePoolSize(corePoolSize);
         executor.setQueueCapacity(queueCapacity);
         executor.setKeepAliveSeconds(keepAliveSeconds);
-        // 绾跨▼姹犲鎷掔粷浠诲姟(鏃犵嚎绋嬪彲鐢�)鐨勫鐞嗙瓥鐣�
-        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
+        RejectedExecutionHandler handler;
+        if (rejectedExecutionHandler.equals("CallerRunsPolicy")) {
+            handler = new ThreadPoolExecutor.CallerRunsPolicy();
+        } else if (rejectedExecutionHandler.equals("DiscardOldestPolicy")) {
+            handler = new ThreadPoolExecutor.DiscardOldestPolicy();
+        } else if (rejectedExecutionHandler.equals("DiscardPolicy")) {
+            handler = new ThreadPoolExecutor.DiscardPolicy();
+        } else {
+            handler = new ThreadPoolExecutor.AbortPolicy();
+        }
+        executor.setRejectedExecutionHandler(handler);
         return executor;
     }
 
@@ -46,14 +67,11 @@
      * 鎵ц鍛ㄦ湡鎬ф垨瀹氭椂浠诲姟
      */
     @Bean(name = "scheduledExecutorService")
-    protected ScheduledExecutorService scheduledExecutorService()
-    {
+    protected ScheduledExecutorService scheduledExecutorService() {
         return new ScheduledThreadPoolExecutor(corePoolSize,
-                new BasicThreadFactory.Builder().namingPattern("schedule-pool-%d").daemon(true).build())
-        {
+                new BasicThreadFactory.Builder().namingPattern("schedule-pool-%d").daemon(true).build()) {
             @Override
-            protected void afterExecute(Runnable r, Throwable t)
-            {
+            protected void afterExecute(Runnable r, Throwable t) {
                 super.afterExecute(r, t);
                 Threads.printException(r, t);
             }

--
Gitblit v1.9.3