CAS理论

1.CAS理论

CAS,即一种对内存中的共享数据进行操作的指令,而且该操作是原子的读写操作。其过程如下:首先CPU将内存中的将要被修改的数据与预期的值进行比较,如果这两个值相等,CPU则会将内存中数值替换为新值,否则不做操作。java对于进行了支持,如AtomicInteger,AtomicStampedReference等,在Atomic包下的类。

优点:保证原子性,不使用锁,更轻量级。

缺点:1.自旋时间消耗

          2.只能保证一个变量的原子操作

          3.ABA问题

二、ABA问题的解决

1.加时间戳或者版本号。

     java使用AtomicStampedReference这个类完成版本检测,解决ABA问题。

2.变量是否被改变的检测。

   java使用AtomicMarkableReference完成变量是否被修改过。

 

你可能感兴趣的:(java,juc,J.U.C)