CAS優缺點


cas優點:如一描述在並發量不是很高時cas機制會提高效率。
cas缺點:
1、cpu開銷大,在高並發下,許多線程,更新一變量,多次更新不成功,循環反復,給cpu帶來大量壓力。
2、只是一個變量的原子性操作,不能保證代碼塊的原子性。
3、ABA問題

ABA問題:內存值V=100;
threadA 將100,改為50;
threadB 將100,改為50;
threadC 將50,改為100;

場景:小牛取款,由於機器不太好使,多點了幾次全款操作。后台threadA和threadB工作,
此時threadA操作成功(100->50),threadB阻塞。正好牛媽打款50元給小牛(50->100),
threadC執行成功,之后threadB運行了,又改為(100->50)。
牛氣沖天,lz錢哪去了???

如何解決aba問題:
對內存中的值加個版本號,在比較的時候除了比較值還的比較版本號。

java:AtomicStampedReference就是用版本號實現cas機制。


免責聲明!

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



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