Java同步:synchronized解析

問題

(1)synchronized的特性?
(2)synchronized的實現原理?
(3)synchronized是否可重入?
(4)synchronized是否是公平鎖?
(5)synchronized的優化?
(6)synchronized的五種使用方式?

實現原理

在學習Java內存模型的時候,我們介紹過兩個指令:lock 和 unlock。

  • lock,鎖定,作用於主內存的變量,它把主內存中的變量標識爲一條線程獨佔狀態。
  • unlock,解鎖,作用於主內存的變量,它把鎖定的變量釋放出來,釋放出來的變量纔可以被其它線程鎖定。

但是這兩個指令並沒有直接提供給用戶使用,而是提供了兩個更高層次的指令 monitorenter 和 monitorexit 來隱式地使用 lock 和 unlock 指令。

而 synchronized 就是使用 monit

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