更新時間:2020年12月08日17時15分 來源:傳智教育 瀏覽次數(shù):
樂觀鎖有什么缺點?
樂觀鎖避免了悲觀鎖獨占對象的現(xiàn)象,同時也提高了并發(fā)性能,但它也有缺點:
1.樂觀鎖只能保證一個共享變量的原子操作。如果多一個或幾個變量,樂觀鎖將變得力不從心,但互斥鎖能輕易解決,不管對象數(shù)量多少及對象顆粒度大小。
2.長時間自旋可能導致開銷大。假如CAS長時間不成功而一直自旋,會給CPU帶來很大的開銷。
3.ABA問題。CAS的核心思想是通過比對內(nèi)存值與預期值是否一樣而判斷內(nèi)存值是否被改過,但這個判斷邏輯不嚴謹,假如內(nèi)存值原來是A,后來被一條線程改為B,最后又被改成了A,則CAS認為此內(nèi)存值并沒有發(fā)生改變,但實際上是有被其他線程改過的,這種情況對依賴過程值的情景的運算結果影響很大。解決的思路是引入版本號,每次變量更新都把版本號加一。、
猜你喜歡:
Spring AOP實現(xiàn)原理和常見代理的區(qū)別
下面是傳智教育公開的幾套Java課程,您可以下載和在線觀看學習,如果想深入學習java并想找到不錯的java開發(fā)相關工作,建議報班學習傳智教育Java高級軟件工程師課程。獲取【Java視頻教程+資料】加播妞:435946716。