From dafdb43c848d5e1859ff22dd27d9d21c92bc169d Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期二, 11 五月 2021 10:02:32 +0800 Subject: [PATCH] update 配置转移到 yml 文件 统一管理 --- ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java | 142 ++++++++++++++++++++++++++-------------------- 1 files changed, 80 insertions(+), 62 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 618a925..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,62 +1,80 @@ -package com.ruoyi.framework.config; - -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ScheduledThreadPoolExecutor; -import java.util.concurrent.ThreadPoolExecutor; -import org.apache.commons.lang3.concurrent.BasicThreadFactory; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; -import com.ruoyi.common.utils.Threads; - -/** - * 绾跨▼姹犻厤缃� - * - * @author ruoyi - **/ -@Configuration -public class ThreadPoolConfig -{ - // 鏍稿績绾跨▼姹犲ぇ灏� - private int corePoolSize = 50; - - // 鏈�澶у彲鍒涘缓鐨勭嚎绋嬫暟 - private int maxPoolSize = 200; - - // 闃熷垪鏈�澶ч暱搴� - private int queueCapacity = 1000; - - // 绾跨▼姹犵淮鎶ょ嚎绋嬫墍鍏佽鐨勭┖闂叉椂闂� - private int keepAliveSeconds = 300; - - @Bean(name = "threadPoolTaskExecutor") - public ThreadPoolTaskExecutor threadPoolTaskExecutor() - { - ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); - executor.setMaxPoolSize(maxPoolSize); - executor.setCorePoolSize(corePoolSize); - executor.setQueueCapacity(queueCapacity); - executor.setKeepAliveSeconds(keepAliveSeconds); - // 绾跨▼姹犲鎷掔粷浠诲姟(鏃犵嚎绋嬪彲鐢�)鐨勫鐞嗙瓥鐣� - executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); - return executor; - } - - /** - * 鎵ц鍛ㄦ湡鎬ф垨瀹氭椂浠诲姟 - */ - @Bean(name = "scheduledExecutorService") - protected ScheduledExecutorService scheduledExecutorService() - { - return new ScheduledThreadPoolExecutor(corePoolSize, - new BasicThreadFactory.Builder().namingPattern("schedule-pool-%d").daemon(true).build()) - { - @Override - protected void afterExecute(Runnable r, Throwable t) - { - super.afterExecute(r, t); - Threads.printException(r, t); - } - }; - } -} +package com.ruoyi.framework.config; + +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 java.util.concurrent.RejectedExecutionHandler; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledThreadPoolExecutor; +import java.util.concurrent.ThreadPoolExecutor; + +/** + * 绾跨▼姹犻厤缃� + * + * @author Lion Li + **/ +@Configuration +public class ThreadPoolConfig { + + // 鏍稿績绾跨▼姹犲ぇ灏� + @Value("${threadPoolConfig.corePoolSize}") + private int corePoolSize; + + // 鏈�澶у彲鍒涘缓鐨勭嚎绋嬫暟 + @Value("${threadPoolConfig.maxPoolSize}") + private int maxPoolSize; + + // 闃熷垪鏈�澶ч暱搴� + @Value("${threadPoolConfig.queueCapacity}") + private int queueCapacity; + + // 绾跨▼姹犵淮鎶ょ嚎绋嬫墍鍏佽鐨勭┖闂叉椂闂� + @Value("${threadPoolConfig.keepAliveSeconds}") + private int keepAliveSeconds; + + // 绾跨▼姹犲鎷掔粷浠诲姟(鏃犵嚎绋嬪彲鐢�)鐨勫鐞嗙瓥鐣� + @Value("${threadPoolConfig.rejectedExecutionHandler}") + private String rejectedExecutionHandler; + + @Bean(name = "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); + 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; + } + + /** + * 鎵ц鍛ㄦ湡鎬ф垨瀹氭椂浠诲姟 + */ + @Bean(name = "scheduledExecutorService") + protected ScheduledExecutorService scheduledExecutorService() { + return new ScheduledThreadPoolExecutor(corePoolSize, + new BasicThreadFactory.Builder().namingPattern("schedule-pool-%d").daemon(true).build()) { + @Override + protected void afterExecute(Runnable r, Throwable t) { + super.afterExecute(r, t); + Threads.printException(r, t); + } + }; + } +} -- Gitblit v1.9.3