在java 中,你自定義線程池 是 爲啥?

我記得之前在哪 看到過類似這種文章,說 在阿里面試的時候,問過類似這個問題。於是  我去網上找 了一些答案;

很快,知乎上給了 相應的解答。類似這樣子;

爲什麼他們阿里要禁用Executors創建線程池?

在這篇文章;

自己去定義線程池的原因、

有這麼  幾句總結,(詳細的內容,大家可以去看)

  • FixedThreadPool和SingleThreadExecutor => 允許的請求隊列長度爲Integer.MAX_VALUE,可能會堆積大量的請求,從而引起OOM異常
  • CachedThreadPool => 允許創建的線程數爲Integer.MAX_VALUE,可能會創建大量的線程,從而引起OOM異常

這就是爲什麼禁止使用Executors去創建線程池,而是推薦自己去創建ThreadPoolExecutor的原因;

文章的 最後,也給出了測試 OOM 的 方法

本人 學習java 時間不長,內功不夠深厚,望 有 人 指點,不慎賜教。謝謝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章