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

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

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

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

樂觀鎖

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

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

悲觀鎖

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

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

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

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

1590050011625_咨詢課程小.jpg


猜你喜歡:

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

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

Java中switch條件語句的用法

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