原子類AtomicInteger的ABA問題


連環討論

從AtomicInteger引入下面的問題
CAS->Unsafe->CAS底層思想->ABA->原子引用更新->如何規避ABA問題

ABA問題是什么

狸貓換太子

假設現在有兩個線程,分別是T1和T2,然后T1執行某個操作的時間為10秒,T2執行某個時間的操作是2秒,最開始AB兩個線程,分別從主內存中獲取A值,但是因為B的執行速度更快,他先把A的值改成B,然后在修改成A,然后執行完畢,T1線程在10秒后,執行完畢,判斷內存中的值為A,並且和自己預期的值一樣,它就認為沒有人更改了主內存中的值,就快樂的修改成B,但是實際上 可能中間經歷了 ABCDEFA 這個變換,也就是中間的值經歷了狸貓換太子。

所以ABA問題就是,在進行獲取主內存值的時候,該內存值在我們寫入主內存的時候,已經被修改了N次,但是最終又改成原來的值了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM