我記得之前在哪 看到過類似這種文章,說 在阿里面試的時候,問過類似這個問題。於是 我去網上找 了一些答案;
很快,知乎上給了 相應的解答。類似這樣子;
爲什麼他們阿里要禁用Executors創建線程池?
在這篇文章;
有這麼 幾句總結,(詳細的內容,大家可以去看)
- FixedThreadPool和SingleThreadExecutor => 允許的請求隊列長度爲Integer.MAX_VALUE,可能會堆積大量的請求,從而引起OOM異常
- CachedThreadPool => 允許創建的線程數爲Integer.MAX_VALUE,可能會創建大量的線程,從而引起OOM異常
這就是爲什麼禁止使用Executors去創建線程池,而是推薦自己去創建ThreadPoolExecutor的原因;
文章的 最後,也給出了測試 OOM 的 方法
本人 學習java 時間不長,內功不夠深厚,望 有 人 指點,不慎賜教。謝謝。