場景(線程不安全)
需求(解決線程安全問題)
解決方案(Syschronized)
應用(Syschronized的幾種使用:
實例鎖(等同於同步代碼塊的this),
靜態方法鎖(等同同步代碼塊的object.class),
代碼塊
)
原理:
偏向鎖(cas判斷對象頭是否爲該線程)->輕量級鎖(自旋,若自旋n次後還是失敗,或自適應自旋後失敗,升級鎖)->重量級鎖(mutex)
重量級鎖執行流程
對象頭存儲信息:
備註:Syschronized 非公平鎖,所以它的重量級鎖的同步隊列不是FIFO,而是通常隨機喚醒一個。