CAS是否存在ABA的隐患

问题描述

当我学习《深入理解JVM》时, 即使发生了ABA 像数字减法,字符串运算,我觉得不影响运算结果

如果A变量V先是用A值读取,赋值时检查还是A值,是不是表示它的值没有被其他线程改变过?这是做不到的,因为如果它的值在中间的时间段里已经变成了B,然后又变回了A,那么CAS操作就会假设它从来没有改变过。这个漏洞被称为CAS操作的“ABA问题”>

J.U.C 包通过提供一个解决了这个问题 标签类AtomicStamp EdReference的原子引用,可以通过控制变量值的版本来保证CAS的正确性。然而,就目前而言,这个班级处于非常弱势的地位。大多数情况下,ABA问题不会影响程序并发的正确性。如果需要解决ABA问题,切换到传统的互斥同步可能比原子类更高效。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...