java鎖機制

整理一下java的鎖機制。java

1.樂觀鎖與悲觀鎖(排他鎖)redis

悲觀鎖:每次拿數據的時候,都會上鎖數據庫

樂觀鎖:拿數據時不會加鎖,可是每次操做數據的時候會先比較版本。(與CAS無鎖機制相同)分佈式

2.重入鎖線程

鎖傳遞,任意線程在獲取到鎖以後,再次獲取該鎖而不會被該鎖所阻塞。Lock和synchronized都是重入鎖.循環

3.自旋鎖數據

是指當一個線程在獲取鎖的時候,若是鎖已經被其它線程獲取,那麼該線程將循環等待,而後不斷的判斷鎖是否可以被成功獲取,直到獲取到鎖纔會退出循環。兼容

4.讀寫鎖di

讀讀兼容,讀寫兼容,寫讀不兼容,寫寫不兼容阻塞

5.CAS無鎖

campare and swap 。 首先會拿出一個版本,而後操做,寫入數據庫時會與數據庫的版本比對,若是不一致就寫入失敗。

6.分佈式鎖

不一樣系統之間使用的鎖,只用過redis 實現

相關文章
相關標籤/搜索