【PS:該文章爲個人學習總結,尚不完善僅供參考】
無鎖:對象初始化狀態
偏向鎖:對象內存的heard中記錄Markdown並將Markdown信息給到cpu作爲標識,每次cpu識別到線程的Markdown與自己保存的一致,就讓該線程執行(此時並未實際加鎖)
輕量級鎖:進入synchronized代碼塊後線程中對象鎖升級爲輕量級鎖(線程競爭量較少的情況下)
重量級鎖:大量線程同時搶佔一把鎖,只有一個線程能獲得鎖其他線程進入阻塞狀態極爲消耗cpu資源,該狀態下系統將鎖升級爲重量級鎖,將阻塞的線程分爲兩部分,一部分放入睡眠隊列放棄爭搶資源直至被cpu喚醒,一部分放入同步隊列等待cpu釋放鎖,然後搶佔鎖資源。