countdownlatch的await()方法是等待count=0,執行此方法時,執行完的線程會進入阻塞,並等待其他線程完成,當所有線程完成時,await會喚醒阻塞隊列並釋放所有線程資源。
當高並發請求時,countdownlatch的await方法有可能會引起死鎖。如果使用的線程池數量較少,在高並發時會出現多個請求占用了全部的線程資源,但是每個請求又需要await其他線程,其他線程在等待線程池資源,導致多個請求同時進入線程阻塞,最後形成死鎖。
解決方法,使用自定義線程池,擴大線程數量,並且建立線程池拒絕機制。