Java缓存线程池(newCachedThreadPool)是按需创建、自动回收的线程池,核心线程数为0、最大线程数为Integer.MAX_VALUE、使用SynchronousQueue,空闲线程60秒后销毁;慎用因其线程数不可控、无任务缓冲、不适用长耗时任务;推荐显式构造ThreadPoolExecutor并设置合理参数。
Java缓存线程池(newCachedThreadPool)是一种按需创建、自动回收的线程池,适用于执行大量短期异步任务的场景。
它内部使用 SynchronousQueue 作为任务队列(不缓存任务),没有固定核心线程数(corePoolSize = 0),最大线程数设为 Integer.MAX_VALUE。当提交新任务时:
它的线程生命周期完全由负载驱动,不预热、不常驻:
虽然灵活,但存在明显风险:
Integer.MAX_VALUE,高并发下易导致线程数爆炸,引发 OutOfMemoryError 或系统资源耗尽;RejectedExecutionException);生产环境推荐用 ThreadPoolExecutor 显式构造,例如:
corePoolSize 和 maximumPoolSize(如 CPU 核心数 × 2);ArrayBlockingQueue(100))防止任务无限堆积;CallerRunsPolicy)避免异常中断;