线程池如何用、线程池的好处、线程池的启动策略
作为程序员面试的高频考点,线程池几乎是必问的技术点。今天我们就以面试题的视角,拆解线程池的核心用法、优势以及启动策略,帮你轻松拿下这类问题!
💻 一、线程池如何用
线程池的核心是复用线程资源,避免频繁创建销毁带来的开销。使用时主要关注 ThreadPoolExecutor 的 7 大参数:
corePoolSize:核心线程数(常驻线程)maximumPoolSize:最大线程数(临时线程上限)keepAliveTime:临时线程空闲存活时间unit:存活时间单位(秒/毫秒)workQueue:任务队列(如ArrayBlockingQueue)threadFactory:线程工厂(定制线程名等)handler:拒绝策略(任务满时的处理逻辑)
✅ 典型代码示例(口述版):
ExecutorService pool = new ThreadPoolExecutor(
5, // 核心线程数
10, // 最大线程数
60, TimeUnit.SECONDS,
new ArrayBlockingQueue<>(100),
Executors.defaultThreadFactory(),
new ThreadPoolExecutor.AbortPolicy()
);
pool.execute(() -> System.out.println("任务执行"));
📌 面试点拨:
如果被问到“线程池怎么创建”,重点说明参数含义和协作流程,比如:
“当任务数超过核心线程数时,新任务会进入队列;队列满了才会启用临时线程” → 这就是线程池的工作流。
🚀 二、线程池的好处
为什么用线程池?面试官想听的不仅是定义,更是实际价值:
- 降低资源消耗:复用线程,避免反复创建销毁(尤其对短任务场景)
- 提高响应速度:任务来了直接由空闲线程执行,无需等待线程创建
- 增强可控性:通过参数精细化管理线程数量、队列容量、拒绝策略
- 统一监控/管理:可通过
ThreadPoolExecutor的 API 监控运行状态 - 避免 OOM 风险:通过队列容量限制和拒绝策略防止任务无限堆积
✅ 场景举例:
假设你的服务每秒要处理 1000 个短时 HTTP 请求,如果每个请求新建一个线程,瞬间就会击穿 JVM 线程上限!而线程池通过队列缓冲+线程复用,让系统稳如泰山。
⚙️ 三、线程池的启动策略
线程池的任务调度流程是面试重点,记住这个四步口诀:
- 核心线程优先:新任务提交 → 优先交给核心线程执行
- 队列次之:若核心线程全忙 → 任务进入队列等待
- 临时线程兜底:若队列已满 → 创建临时线程(不超过 maxPoolSize)
- 拒绝策略保底:若线程数已达 max 且队列满 → 触发拒绝策略
📊 流程图解:

🔍 高频考点:
- 拒绝策略有哪些?
AbortPolicy(默认):直接抛出RejectedExecutionExceptionCallerRunsPolicy:由提交任务的线程自己执行DiscardPolicy:默默丢弃任务DiscardOldestPolicy:丢弃队列最老的任务,重试提交
💡 附:2025年Java面试宝典
网盘链接:
👉 点击下载《2025 Java面试高频题库》
提取码:9b3g
(涵盖并发/ JVM/ Spring/ MySQL等高频考点解析 ✅)
🎁 福利时间
如果需要购买面试鸭会员,通过 面试鸭返利网 找我下单,可返现 25 元!

📢 为什么走返利?
- 官方价基础上额外省 25 元
- 支持售后答疑(面试鸭题库使用问题可问我)
- 加我微信领面试话术模板(如如何解释线程池参数)
返回首页:面试鸭返利网
用好线程池,面试不用慌! 🚀


