當前位置:編程學習大全網 - 行動軟體 - countdownlatch 導致的多線程死鎖

countdownlatch 導致的多線程死鎖

countdownlatch是通過計數器實現的,初始化時定義count數,每壹個線程執行完將count數-1.當count=0時表示所以線程執行完畢,可以進入接下來的邏輯。

countdownlatch的await()方法是等待count=0,執行此方法時,執行完的線程會進入阻塞,並等待其他線程完成,當所有線程完成時,await會喚醒阻塞隊列並釋放所有線程資源。

當高並發請求時,countdownlatch的await方法有可能會引起死鎖。如果使用的線程池數量較少,在高並發時會出現多個請求占用了全部的線程資源,但是每個請求又需要await其他線程,其他線程在等待線程池資源,導致多個請求同時進入線程阻塞,最後形成死鎖。

解決方法,使用自定義線程池,擴大線程數量,並且建立線程池拒絕機制。

  • 上一篇:《竹裏館》原文及翻譯
  • 下一篇:求壹首英文歌,歌詞最後壹句是to be a better man。求歌名和全部歌詞。
  • copyright 2024編程學習大全網