死鎖篇:線程飢餓死鎖問題

引言

前面介紹的鎖順序死鎖和協作對象間調用而引發的死鎖問題,都是因爲請求鎖而不得導致的,本文將介紹一種新的死鎖情況,它產生的直接原因不是得不到鎖,而是得不到資源,比如,線程池調度過程中,某個任務因得不到線程資源,一直等待、繼而 “餓死” 的一種死鎖情況。

這種死鎖常發生在單線程或者工作線程數特別小的線程池中, Timer 或者線程池大小爲 1 的 ThreadPoolExecutor 容易發生資源飢餓死鎖 ,一起來看看它的產生過程和破解方案吧。

線程飢餓死鎖概述

《Java併發編程實踐》中對線程飢餓死鎖的解釋是這樣的:

在使用線程池執行任務時,如果任務

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