併發系列—synchronized鎖升級流程

PS:該文章爲個人學習總結,尚不完善僅供參考

無鎖:對象初始化狀態

偏向鎖:對象內存的heard中記錄Markdown並將Markdown信息給到cpu作爲標識,每次cpu識別到線程的Markdown與自己保存的一致,就讓該線程執行(此時並未實際加鎖

輕量級鎖:進入synchronized代碼塊後線程中對象鎖升級爲輕量級鎖(線程競爭量較少的情況下

重量級鎖:大量線程同時搶佔一把鎖,只有一個線程能獲得鎖其他線程進入阻塞狀態極爲消耗cpu資源,該狀態下系統將鎖升級爲重量級鎖,將阻塞的線程分爲兩部分,一部分放入睡眠隊列放棄爭搶資源直至被cpu喚醒,一部分放入同步隊列等待cpu釋放鎖,然後搶佔鎖資源。

 

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