淺淡鎖實現原理(純個人理解,如有錯誤請指正)

2021-09-24 00:04:32 字數 505 閱讀 4209

鎖分很多種,執行緒鎖、程序鎖、分布式鎖...我想大抵上原理應該是一樣,是通過記憶體管理的。

被鎖上就是lock_status = 1 這時候其他程序訪問就訪問不了,只有當lock_status = 0 的時候才可以被其他程序訪問,只能被乙個程序訪問

鎖必須被釋放,不然造成死鎖現象,一直被占用這資源,所以也需要鎖資訊需要超時過期,需要乙個失效時間

分布式鎖怎麼實現了?不同的jvm記憶體也不一樣了,其實分布式只是應用伺服器,並不是快取伺服器,所以需要搭建乙個儲存伺服器,交由儲存伺服器管理

即便是分布式快取也是把快取資料分散在各個伺服器上面,通過演算法找到對應的伺服器然後區值,所以同乙個鎖的資訊還是在一台伺服器上,如果伺服器掛了,鎖資訊會丟失吧

為了避免這樣的情況應該也有會話或者其他的一些方式解決吧,就不太清楚了

繼續研究

posted @

2018-08-10 10:49

dawn-tangzedong 閱讀(

...)

編輯收藏

個人對樂觀鎖和悲觀鎖的理解

悲觀鎖的流程如下 在對任意記錄進行修改前,先嘗試為該記錄加上排他鎖 exclusive locking 如果加鎖失敗,說明該記錄正在被修改,那麼當前查詢可能要等待或者丟擲異常。具體響應方式由開發者根據實際需要決定。如果成功加鎖,那麼就可以對記錄做修改,事務完成後就會解鎖了。其間如果有其他對該記錄做修...

redis深度理解底層鎖原理

redis的鎖分別有incr setnx set,那麼我們就開始來談談他們的用法和場景吧!1.incr 計時器,1操作 a 語法 incr key b 場景 1 控制api 1秒內的多次訪問 2 記錄使用者每天訪問 的登入次數 c 為何我們說這個怎麼能算鎖呢,當然,單獨它肯定是算不了鎖的,因為它本身...

常見排序原理(基於個人理解)

氣泡排序 迴圈比較兩個相鄰的元素,每次迴圈比較會把最大的乙個元素 或者最小乙個元素 排到最後。選擇排序 每次選擇乙個最大的 或最小的 元素,排到元素最後。插入排序 將數列分為有序和無序兩個部分,每次處理就是將無序數列的第乙個元素與有序數列的元素從後往前逐個進行比較,找出插入位置,將該元素插入到有序數...