JAVA Synchronized和Lock的區別

Synchronized和Lock的區別

synchronized關鍵字和java.util.concurrent.locks.Lock都能加鎖,兩者有什麼區別呢?

  1. 原始構成sync是JVM層面的,底層通過monitorentermonitorexit來實現的。Lock是JDK API層面的。(sync一個enter會有兩個exit,一個是正常退出,一個是異常退出)
  2. 使用方法sync不需要手動釋放鎖,而Lock需要手動釋放。
  3. 是否可中斷sync不可中斷,除非拋出異常或者正常運行完成。Lock是可中斷的,通過調用interrupt()方法。
  4. 是否爲公平鎖sync只能是非公平鎖,而Lock既能是公平鎖,又能是非公平鎖。
  5. 綁定多個條件sync不能,只能隨機喚醒。而Lock可以通過Condition來綁定多個條件,精確喚醒。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章