队列过长的主要影响
1. 内存溢出 (OOM)
使用无界队列会让待执行任务不断累积,最终耗尽内存并抛出 OutOfMemoryError
2. 垃圾回收压力增大
大量堆积的任务对象会占用堆内存,触发频繁的 GC,严重时会出现 “GC overhead limit exceeded”
3. 系统吞吐量下降与高延迟
任务堆积在线程池队列中时,新任务无法及时执行,导致整体吞吐量下降、响应时延显著增加
4. 最大线程数失效与拒绝策略失灵
当队列容量巨大或使用无界队列时,线程数只会达到 corePoolSize
而不会扩展至 maximumPoolSize
,导致拒绝策略永远不被触发
5. 任务饥饿死锁
若队列内的任务相互依赖(如 A 任务等待 B 任务结果),大量任务排队会造成线程饥饿死锁,线程池无法分配足够线程解决依赖