From 0bf868d3cdf9226e178c076d3b588ed5207409a0 Mon Sep 17 00:00:00 2001 From: kongzy <kongzy> Date: 星期五, 24 十一月 2023 17:51:40 +0800 Subject: [PATCH] merge --- assess-common/src/main/java/com/gkhy/assess/common/config/ThreadPoolConfig.java | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 50 insertions(+), 0 deletions(-) diff --git a/assess-common/src/main/java/com/gkhy/assess/common/config/ThreadPoolConfig.java b/assess-common/src/main/java/com/gkhy/assess/common/config/ThreadPoolConfig.java new file mode 100644 index 0000000..49ee9a8 --- /dev/null +++ b/assess-common/src/main/java/com/gkhy/assess/common/config/ThreadPoolConfig.java @@ -0,0 +1,50 @@ +package com.gkhy.assess.common.config; + +import com.gkhy.assess.common.utils.Threads; +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 java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledThreadPoolExecutor; +import java.util.concurrent.ThreadPoolExecutor; + +@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; + } + + public ScheduledExecutorService scheduledExecutorService(){ + return new ScheduledThreadPoolExecutor(corePoolSize, + new BasicThreadFactory.Builder().namingPattern("schedule-pool-%d").daemon(true).build(), + new ThreadPoolExecutor.CallerRunsPolicy()){ + @Override + protected void afterExecute(Runnable r, Throwable t) { + super.afterExecute(r, t); + Threads.printException(r,t); + } + }; + } + + + +} -- Gitblit v1.9.2