package org.springblade.sample.utils; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingDeque; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; /** * 肖扬: 线程池配置类 **/ @Configuration public class MyThreadConfig { /** * 基础线程数为 cpu 2n-1 * 核心线程为 基础线程数 2n-1 */ @Bean public ThreadPoolExecutor threadPoolExecutor() { return new ThreadPoolExecutor( Runtime.getRuntime().availableProcessors()-1, // 核心线程数 Runtime.getRuntime().availableProcessors()*2-1, // 最大线程数 10, // 线程空闲时存活的时间 TimeUnit.MINUTES, // 存活时间的单位 new LinkedBlockingDeque<>(Integer.MAX_VALUE), // 队列类型和大小(无界队列) Executors.defaultThreadFactory(), // 线程工厂 (默认,无特殊需求都为默认) new ThreadPoolExecutor.CallerRunsPolicy() // 饱和策略(CallerRunsPolicy策略防止任务的丢失) ); } }
java线程池(直接复制用就行,参数已进行调配)
于 2024-12-22 11:37:10 首次发布