共享鎖(S鎖):若是事務T對數據A加上共享鎖後,則其餘事務只能對A再加共享鎖,不能加排他鎖,直到已釋放全部共享鎖。獲准共享鎖的事務只能讀數據,不能修改數據。 排他鎖(X鎖):若是事務T對數據A加上排他鎖後,則其餘事務不能再對A加任任何類型的鎖,直到在事務的末尾將資源上的鎖釋放爲止。獲准排他鎖的事務既能讀數據,又能修改數據。安全
自旋鎖與互斥鎖有點相似,只是自旋鎖不會引發調用者睡眠,若是自旋鎖已經被別的執行單元保持,調用者就一直循環在那裏看是否該自旋鎖的保持者已經釋放了鎖,"自旋"一詞就是所以而得名。jvm
- 自旋鎖:自旋,jvm默認是10次吧,有jvm本身控制。for去爭取鎖
- 自旋鎖的其餘種類
- 阻塞鎖:被阻塞的線程,不會爭奪鎖。
- 可重入鎖: 屢次進入改鎖的域
- 讀寫鎖
- 互斥鎖:鎖自己就是互斥的
- 悲觀鎖:不相信,這裏會是安全的,必須所有上鎖
- 樂觀鎖:相信,這裏是安全的。
- 公平鎖:有優先級的鎖
- 非公平鎖:無優先級的鎖
- 偏向鎖:無競爭不鎖,有競爭掛起,轉爲輕量鎖
- 對象鎖:鎖住對象
- 線程鎖
- 鎖粗化:多鎖變成一個,本身處理
- 輕量級鎖:CAS 實現
- 鎖消除:偏向鎖就是鎖消除的一種
- 鎖膨脹:jvm實現,鎖粗化
- 信號量:使用阻塞鎖 實現的一種策略