← 学习中心

并发编程:线程池参数、执行流程与调优

掌握线程池七大参数、任务提交后的执行链路、四种拒绝策略,以及核心/最大线程数的合理设置。

本节你将能

画出任务提交后的执行流程,解释为什么不建议用 Executors 快速创建线程池。

核心要点

  • 核心参数:corePoolSize、maximumPoolSize、keepAliveTime、workQueue、threadFactory、handler。
  • 流程:核心线程满 → 入队列 → 队列满 → 开非核心线程 → 再满触发拒绝策略。
  • 拒绝策略:Abort(抛异常)、CallerRuns(调用者执行)、Discard、DiscardOldest。
  • Executors.newFixedThreadPool 用无界队列、newCachedThreadPool 最大线程数极大,都可能 OOM。

调优经验

CPU 密集型≈核数+1;IO 密集型可更高(核数/(1-阻塞系数));需结合压测与队列堆积监控调整。

面试连招

追问:线程池里的线程异常会怎样?如何优雅关闭?submit 与 execute 的区别?

并发编程:线程池参数、执行流程与调优 | 必学必会