CAS理解

一、概念
CAS:Compare and Swap,即比較再交換。CAS是樂觀鎖的一種實現方式。
        對CAS的理解,CAS是一種無鎖算法,CAS有3個操作數,內存值V,舊的預期值A,要修改的新值B。當且僅當預期值A和內存值V相同時,將內存值V修改爲B,否則什麼都不做。CAS是CPU指令級的操作,只有一步原子操作

二、應用場景
樂觀鎖的適用場景於就是讀多寫少的場景。
若發生大量的線程對一個數據庫行進行寫操作,那麼會有大量的寫衝突失敗操作,系統的性能消耗更大,併發量也沒有提高,反而不如使用傳統的互斥鎖
      
  阿里雲-java編碼規範    

併發修改同一記錄時,避免更新丟失,需要加鎖。要麼在應用層加鎖,要麼在緩存加 鎖,要麼在數據庫層使用樂觀鎖,使用 version 作爲更新依據。 說明:如果每次訪問衝突概率小於 20%,推薦使用樂觀鎖,否則使用悲觀鎖。樂觀鎖的重試次 數不得小於 3 次
       
三、CAS的缺點:
CAS雖然很高效的解決了原子操作問題,但是CAS仍然存在三大問題。
循環時間長開銷很大。
只能保證一個共享變量的原子操作。
ABA問題。(如果內存地址V初次讀取的值是A,並且在準備賦值的時候檢查到它的值仍然爲A)

發佈了37 篇原創文章 · 獲贊 12 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章