Java中Executors工具类提供5种静态工厂方法创建线程池:newFixedThreadPool、newSingleThreadExecutor、newCachedThreadPool、newScheduledThreadPool及JDK1.8+新增的newWorkStealingPool等,均封装ThreadPoolExecutor但隐藏关键参数,不推荐生产使用。

Java 中 Executors 工具类通过静态工厂方法快速创建几种典型线程池,适合开发调试、脚本任务或低并发场景。但需注意:这些方法不推荐用于生产环境,因隐藏关键参数(如队列容量、拒绝策略、线程工厂),易引发 OOM 或线程爆炸。
以下是四种最常用方式及对应创建代码:
newFixedThreadPool(int nThreads)
创建固定大小线程池,核心线程数 = 最大线程数 = nThreads,使用无界 LinkedBlockingQueue(容量为 Integer.MAX_VALUE)。
ExecutorService pool = Executors.newFixedThreadPool(4);
newSingleThreadExecutor()
等价于 newFixedThreadPool(1),但额外保障任务 FIFO 顺序执行,且线程异常终止后自动重建。
ExecutorService pool = Executors.newSingleThreadExecutor();
newCachedThreadPool()
核心线程数为 0,最大线程数为 Integer.MAX_VALUE,空闲线程 60 秒后回收,使用 SynchronousQueue(不缓存任务,直接交接)。
ExecutorService pool = Executors.newCachedThreadPool();
newScheduledThreadPool(int corePoolSize)
支持延迟和周期性任务(如 scheduleAtFixedRate),底层是 ScheduledThreadPoolExecutor,非普通 ThreadPoolExecutor 子类。
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(2);
其他补充方法(JDK 1.8+):
-
newWorkStealingPool():基于 ForkJoinPool,适合 CPU 密集型并行任务; -
newSingleThreadScheduledExecutor():单线程版定时调度器; -
defaultThreadFactory()/privilegedThreadFactory():用于自定义线程创建行为。
所有这些方法本质都是对 ThreadPoolExecutor 构造逻辑的封装,省去了显式传参的步骤,但代价是牺牲了可控性与可观测性。
立即学习“Java免费学习笔记(深入)”;


















