線程死鎖就是有兩個線程,一個線程鎖住了資源A,又想去鎖定資源B,另外一個線程鎖定了資源B,又想去鎖定資源A,兩個線程都想去得到對方的資源,而又不願釋放自己的資源進而造成一種互相等待,無法執行的情況
1、出現死鎖後,tps降為0,壓力測試工具無法得到伺服器的響應,伺服器硬體資源空閑, 2、通過jvisualvm去檢視線程情況,至少兩個線程一直處于紅色的阻塞狀态 3、死鎖經常表現為程式的停頓,或者不再響應使用者的請求。從作業系統上觀察,對應程序的CPU占用率為零。

1、通過 jvisualvm 進行線程 dump ,對線程狀态進行分析,擷取到哪行代碼導緻的死鎖
2、通過 jstack pid > jh.log 進行線程 dump 并儲存資訊到目前目錄的 jh.log檔案中 ,對線程狀态進行分析,擷取到哪行代碼導緻的死鎖
一個Block的線程已經鎖了 <0x00000000f0fadbd8> 這個資源,等待鎖定 <0x00000000f0fadbe8>
另一個Block的線程已經鎖了 <0x00000000f0fadbe8> 這個資源,等待鎖定 <0x00000000f0fadbd8>
◼ 避免嵌套加鎖
◼ 減小鎖粒度