
概念:什么是ABA問題呢?
假設有個共享變數的值為A,此時執行緒1去修改這個變數,在執行緒1修改的時候,執行緒2已經把這個變數修改成了B,然后執行緒3又把這個變數修改成了A。當執行緒1修改完畢時根據舊的預期值和共享記憶體的實際值進行比較得到的結果是相等的,則執行緒1認為變數沒被修改過,則執行緒1提交成功,但其實變數已經被修改,此時的A非彼A,這就是ABA問題。
我的疑問:
1、按照ABA問題的概念,我上圖畫的思維邏輯是不是正確的,如果是正確的,那這個ABA問題似乎沒有什么弊端漏洞呀,銀行最終的存款余額還是正確的。
2、如果我上圖畫的是錯的,那需要怎么去理解呢?
我也看了其他大佬的相關博客,但基本很難看明白他們畫的圖,所以就自己畫了這個來理解ABA問題場景。
uj5u.com熱心網友回復:
普通場景下,ABA問題不會有什么影響,比如你在銀行存款,但是你存的錢可能被銀行拿去做什么事情了,最后只是你的錢又回傳來了,但是這個程序你知道嗎,不知道,你只關心結果變沒變。但如果實在一些特定場景,比如
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/220944.html
標籤:Java EE
