互斥鎖(排它鎖、獨佔鎖、寫鎖、X鎖)和共享鎖(讀鎖、S鎖) 自旋鎖

共享鎖(S鎖):若是事務T對數據A加上共享鎖後,則其餘事務只能對A再加共享鎖,不能加排他鎖,直到已釋放全部共享鎖。獲准共享鎖的事務只能讀數據,不能修改數據。 排他鎖(X鎖):若是事務T對數據A加上排他鎖後,則其餘事務不能再對A加任任何類型的鎖,直到在事務的末尾將資源上的鎖釋放爲止。獲准排他鎖的事務既能讀數據,又能修改數據。安全

自旋鎖與互斥鎖有點相似,只是自旋鎖不會引發調用者睡眠,若是自旋鎖已經被別的執行單元保持,調用者就一直循環在那裏看是否該自旋鎖的保持者已經釋放了鎖,"自旋"一詞就是所以而得名。jvm

  • 自旋鎖:自旋,jvm默認是10次吧,有jvm本身控制。for去爭取鎖
  • 自旋鎖的其餘種類
  • 阻塞鎖:被阻塞的線程,不會爭奪鎖。
  • 可重入鎖: 屢次進入改鎖的域
  • 讀寫鎖
  • 互斥鎖:鎖自己就是互斥的
  • 悲觀鎖:不相信,這裏會是安全的,必須所有上鎖
  • 樂觀鎖:相信,這裏是安全的。
  • 公平鎖:有優先級的鎖
  • 非公平鎖:無優先級的鎖
  • 偏向鎖:無競爭不鎖,有競爭掛起,轉爲輕量鎖
  • 對象鎖:鎖住對象
  • 線程鎖
  • 鎖粗化:多鎖變成一個,本身處理
  • 輕量級鎖:CAS 實現
  • 鎖消除:偏向鎖就是鎖消除的一種
  • 鎖膨脹:jvm實現,鎖粗化
  • 信號量:使用阻塞鎖 實現的一種策略
相關文章
相關標籤/搜索