教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

Java面試之樂觀鎖和悲觀鎖的區(qū)別

更新時(shí)間:2020年05月26日13時(shí)44分 來源:傳智播客 瀏覽次數(shù):

樂觀鎖

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

Java中的樂觀鎖基本都是通過CAS操作實(shí)現(xiàn)的,CAS 是一種更新的原子操作,比較當(dāng)前值跟傳入值是否一樣,一樣則更新,否則失敗。

悲觀鎖

悲觀鎖是就是悲觀思想,即認(rèn)為寫多,遇到并發(fā)寫的可能性高,每次去拿數(shù)據(jù)的時(shí)候都認(rèn)為別人會(huì)修改,所以每次在讀寫數(shù)據(jù)的時(shí)候都會(huì)上鎖,這樣別人想讀寫這個(gè)數(shù)據(jù)就會(huì)block直到拿到鎖。

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

以上我們介紹了java中的樂觀鎖和悲觀鎖的概念希望對你有所幫助,如果想系統(tǒng)學(xué)習(xí)和提升java技術(shù)能力,推薦了解傳智播客中級java程序員培訓(xùn)課程。

在傳智播客學(xué)java是什么感受?下面我們通過一個(gè)視頻來感受。

1590050011625_咨詢課程小.jpg


猜你喜歡:

JDK下載安裝與環(huán)境變量配置圖文教程【超詳細(xì)】

java遞歸是什么意思,怎么用

Java中switch條件語句的用法

0 分享到:
和我們在線交談!