Java线程池参数配置与项目实战并发编程面试题
1. Java 中的线程池有哪些核心参数?你在项目中是怎么配置的?
考察点:ThreadPoolExecutor 参数
参考答案:
ThreadPoolExecutor 有 7 个核心参数:
new ThreadPoolExecutor(
corePoolSize, // 核心线程数
maximumPoolSize, // 最大线程数
keepAliveTime, // 空闲线程存活时间
timeUnit, // 时间单位
workQueue, // 工作队列
threadFactory, // 线程工厂
rejectedHandler // 拒绝策略
);
在项目里,我们针对不同场景配置了不同的线程池,比如说工作流节点执行线程池的配置思路是:核心线程数根据 CPU 核数和任务类型定,IO 密集型可以多一些;最大线程数根据系统资源和并发量定;队列用 SynchronousQueue 是因为我们希望任务尽快执行,不要排队;拒绝策略我们选择了 CallerRunsPolicy 可以起到"限流"作用
// 工作流节点执行线程池
ThreadPoolExecutor nodeExecutor = new ThreadPoolExecutor(
10, // 核心 10 个线程
50, // 最大 50 个线程
60L, TimeUni...
热门评论
15 条评论
回复