Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

        

联系锋哥QQ:3320160706

AI编程,程序员挑战年入30~100万高级指南 - 职业规划

Java、Python项目定制找Java1234_小锋老师,专业又靠谱 QQ:3320160706

Java、Python毕设辅导找Java1234_小锋老师,专业又靠谱 QQ:3320160706
当前位置: 主页 > Java文档 > Java基础相关 >

Spring为什么不建议使用默认线程池?


时间:2026-07-13 16:46来源:http://www.java1234.com 作者:小锋  侵权举报
Spring为什么不建议使用默认线程池?
失效链接处理
Spring为什么不建议使用默认线程池?

 
 
相关截图:
 


主要内容:

一、先搞清楚:Spring里的“默认线程池”指什么
在 Spring 项目里,大家说的“默认线程池”,通常有两类:
 
@Async 没指定执行器时Spring 会落到 SimpleAsyncTaskExecutor:来一个任务,就新建一个线程,用完就丢,几乎不做复用。
 
JDK 的 Executors 工厂方法比如 Executors.newFixedThreadPool(n)、newCachedThreadPool()。看起来方便,但队列或线程数往往是“无限”的,埋了隐患。
 
这两种都能“先跑起来”,但生产环境风险都偏大。


二、默认线程池到底有什么坑

1. 线程创建太猛,机器扛不住
SimpleAsyncTaskExecutor 不复用线程。流量一上来,线程越开越多:
 
上下文切换变多,CPU 空转
 
每个线程都占栈内存,堆外压力跟着涨
 
极端情况下直接把机器打挂
 
2. 队列无限膨胀,容易 OOM
Executors.newFixedThreadPool(10) 内部用的是无界队列(LinkedBlockingQueue 不设容量)。核心线程忙不过来时,任务会一直往队列里塞,内存一点点被吃光,最后可能直接 OutOfMemoryError。


 
 
------分隔线----------------------------


锋哥推荐