2020久久超碰欧美精品最新亚洲欧美日韩久久精品,国产福利电影一区二区三区,亚洲欧美日韩一区在线观看,亚洲国产欧美日韩欧美特级,亚洲欧美日韩成人一区久久,欧美日韩精品一区二区三区不卡,国产欧美日韩va另类影音先锋,亚洲欧美日韩久久精品,亚洲欧美日韩国产成人精品影院,亚洲国产欧美日韩精品一区二区三区,欧美日韩国产成人高清视频,日韩久久精品国产免费观看频道,久久人人爽人人爽从片av高清,国产精品综合一区二区

首頁技術文章正文

Java面試:樂觀鎖和悲觀鎖分別是什么?

更新時間:2020-05-26 來源:黑馬程序員 瀏覽量:

1577370495235_學IT就到黑馬程序員.gif


樂觀鎖

樂觀鎖是一種樂觀思想,即認為讀多寫少,遇到并發寫的可能性低,每次去拿數據的時候都認為別人不會修改,所以不會上鎖,但是在更新的時候會判斷一下在此期間別人有沒有去更新這個數據,采取在寫時先讀出當前版本號,然后加鎖操作(比較跟上一次的版本號,如果一樣則更新),如果失敗則要重復讀-比較-寫的操作。

Java中的樂觀鎖基本都是通過CAS操作實現的,CAS 是一種更新的原子操作,比較當前值跟傳入值是否一樣,一樣則更新,否則失敗。

 

悲觀鎖

悲觀鎖是就是悲觀思想,即認為寫多,遇到并發寫的可能性高,每次去拿數據的時候都認為別人會修改,所以每次在讀寫數據的時候都會上鎖,這樣別人想讀寫這個數據就會block直到拿到鎖。

Java中的悲觀鎖就是Synchronized,AQS框架下的鎖則是先嘗試cas樂觀鎖去獲取鎖,獲取不到,才會轉換為悲觀鎖,如 RetreenLock。

以上我們介紹了java中的樂觀鎖和悲觀鎖的概念希望對你有所幫助,如果想系統學習和提升java技術能力,推薦了解黑馬程序員中級java程序員培訓課程。


在黑馬程序員學java是什么感受?下面我們通過一個視頻來感受。

1590050011625_咨詢課程小.jpg


猜你喜歡:

Java中sleep方法與wait方法的區別

Java中volatile關鍵字有什么作用?

Java編程思想

分享到:
在線咨詢 我要報名
和我們在線交談!