123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- package cn.com.zyjblogs.chat.config.threadpool;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
- import java.util.concurrent.Executor;
- import java.util.concurrent.ThreadPoolExecutor;
- /**
- * copyright (C), 2021, 北京同创永益科技发展有限公司
- *
- * @author zhuyijun
- * @version 1.0.0
- * <author> <time> <version> <description>
- * zhuyijun 2021/6/7 8:38 1.0 线程池
- * @program hatech-bcms-core
- * @description 线程池
- * @create 2021/6/7 8:38
- */
- @Configuration
- @Slf4j
- public class ExecutorConfig {
- @Value("${async.executor.thread.core_pool_size}")
- private int corePoolSize;
- @Value("${async.executor.thread.max_pool_size}")
- private int maxPoolSize;
- @Value("${async.executor.thread.queue_capacity}")
- private int queueCapacity;
- @Value("${async.executor.thread.name.prefix}")
- private String namePrefix;
- @Bean(name = "asyncServiceExecutor")
- public Executor asyncServiceExecutor() {
- log.info("start asyncServiceExecutor");
- ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
- //配置核心线程数
- executor.setCorePoolSize(corePoolSize);
- //配置最大线程数
- executor.setMaxPoolSize(maxPoolSize);
- //配置队列大小
- executor.setQueueCapacity(queueCapacity);
- //配置线程池中的线程的名称前缀
- executor.setThreadNamePrefix(namePrefix);
- // rejection-policy:当pool已经达到max size的时候,如何处理新任务
- // CALLER_RUNS:不在新线程中执行任务,而是有调用者所在的线程来执行
- executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
- //执行初始化
- executor.initialize();
- log.info("asyncServiceExecutor init over.....");
- return executor;
- }
- }
|