| | |
| | | import java.util.concurrent.ScheduledThreadPoolExecutor; |
| | | import java.util.concurrent.ThreadPoolExecutor; |
| | | |
| | | /** |
| | | * 线程池配置类 |
| | | * @author WWW |
| | | * @date 2023-07-10 |
| | | */ |
| | | @Configuration |
| | | @SuppressWarnings("ALL") |
| | | public class ThreadPoolConfig { |
| | | /** |
| | | * 核心线程池大小 |
| | | */ |
| | | private final static int CORE_POOL_SIZE = 50; |
| | | |
| | | /** |
| | | * 最大可创建的线程数 |
| | | */ |
| | | private final static int MAX_POOL_SIZE = 200; |
| | | |
| | | /** |
| | | * 队列最大长度 |
| | | */ |
| | | private final static int QUEUE_CAPACITY = 1000; |
| | | |
| | | /** |
| | | * 线程池维护线程所允许的空闲时间 |
| | | */ |
| | | private final static int KEEP_ALIVE_SECONDS = 300; |
| | | |
| | | @Bean(name = "threadPoolTaskExecutor") |
| | |
| | | executor.setCorePoolSize(CORE_POOL_SIZE); |
| | | executor.setQueueCapacity(QUEUE_CAPACITY); |
| | | executor.setKeepAliveSeconds(KEEP_ALIVE_SECONDS); |
| | | // 线程池对拒绝任务(无线程可用)的处理策略 |
| | | executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); |
| | | |
| | | return executor; |
| | | } |
| | | |
| | | /** |
| | | * 执行周期性或定时任务 |
| | | */ |
| | | @Bean(name = "scheduledExecutorService") |
| | | protected ScheduledExecutorService scheduledExecutorService() { |
| | | return new ScheduledThreadPoolExecutor(CORE_POOL_SIZE, |