Java 进阶之路(一):线程池的六个参数,我背了三年才真正理解

线程池大概是面试八股文出现频率最高的知识点,但大部分人对它的理解停在“背参数”这一层。

corePoolSize 的真正含义

核心线程数不是“常驻线程数”,而是“不需要排队就创建的线程数”。这个差别在读源码之前我一直没搞清楚。

队列比你想的重要

newFixedThreadPool 用的是无界队列 LinkedBlockingQueue,这意味着maximumPoolSize 在那里形同虚设——任务永远先堆队列,堆不进去才开新线程,而无界队列永远堆得进去。

所以线上事故里“线程池没扛住”的真相,常常是队列无限膨胀导致 OOM,而不是线程不够。

(本系列第二篇讲 volatile 与内存可见性,写作中。)