Java线程池参数详解
作为程序员,面试中"线程池参数"几乎是必考题。今天咱们就掰开揉碎聊聊Java线程池的七大核心参数,帮你轻松应对面试场景!
🔧 线程池的核心参数
线程池通过ThreadPoolExecutor类实现,构造函数包含以下关键参数:
-
corePoolSize(核心线程数)
线程池的"常驻员工",即使空闲也不会被回收。比如设置corePoolSize=5,线程池最少保留5个线程待命。 -
maximumPoolSize(最大线程数)
线程池的"临时工上限"。当任务暴增时,会创建新线程直到达到此值。例如maximumPoolSize=10,表示最多容纳10个线程同时工作。 -
keepAliveTime(线程空闲存活时间)
临时工"摸鱼"多久会被辞退。比如设置keepAliveTime=60s,当非核心线程空闲超过60秒就会被销毁。 -
unit(时间单位)
配合keepAliveTime使用,常用TimeUnit.SECONDS或TimeUnit.MILLISECONDS。 -
workQueue(任务队列)
任务的"候客区",常用有三种:LinkedBlockingQueue:无界队列,可能引发OOMArrayBlockingQueue:有界队列,需指定容量SynchronousQueue:不存任务,直接交给线程
-
threadFactory(线程工厂)
定制化创建线程,可设置线程名、优先级等。面试常考自定义线程命名规则! -
handler(拒绝策略)
当线程和队列都满了时的"熔断机制",四种策略:AbortPolicy:直接抛异常(默认)CallerRunsPolicy:让提交任务的线程自己执行DiscardPolicy:默默丢弃新任务DiscardOldestPolicy:丢弃队列最老的任务

▲ 线程池参数协作示意图
⚡️ 参数配置实战技巧
- CPU密集型任务:推荐
corePoolSize = CPU核数 + 1 - IO密集型任务:可设
corePoolSize = 2 * CPU核数 - 队列选择:需要限流时用
ArrayBlockingQueue,快速响应用SynchronousQueue - 拒绝策略:重要业务用
CallerRunsPolicy,日志类任务可用DiscardPolicy
💡 经典面试场景
面试官:"如果核心线程5个,最大线程10个,队列容量100。突然来200个任务会发生什么?"
答:
- 前5个任务由核心线程处理
- 第6-105个任务进入队列
- 第106-115个任务创建临时线程处理
- 剩余任务触发拒绝策略
📦 学习资源推荐
2025年Java面试宝典:
链接: <a href="https://pan.baidu.com/s/1RUVf75gmDVsg8MQp4yRChg?pwd=9b3g" style="color:blue">网盘下载</a> 提取码: 9b3g
🔥 福利提醒:通过面试鸭返利网购买会员可返利25元!覆盖全网大厂真题,助你快速通关!
掌握线程池参数调优,能直接体现你的并发编程功底。建议根据业务特点测试不同配置,毕竟没有放之四海而皆准的方案。最后提醒:使用Executors快速创建线程池虽然方便,但隐藏了参数细节,生产环境推荐手动配置ThreadPoolExecutor!

▲ 系统化学习才是通关关键
返回首页 | 获取更多面试技巧


