CAS实现volatile原子性

原子性:表现为每个可以单独操作,不相互依赖,在线程中表现为每个线程都有他自己的一份值,不定期的刷新到主内存。

1.CAS实现volatile的原子性

volatile只能实现可见性,不能实现原子性。但是可以用CAS操作来实现其原子性。
实现原理:CAS保存了3个值,H为预期值,V为内存值,S为计算值。
代码如下:

public final int casTest() {
        for (;;) {
            int h=i;                  //A线程叫AH,B线程描述为BH        
            int s = i + 1;         // A线程叫AS,B线程描述为BS         
            if(h==i){           // 比较内存值和预期值                          
               i=s;                  // 如果相同,赋值,成功CAS              
               break;
            }
            }

2.也可以用synchronized锁进行同步。

你可能感兴趣的:(CAS实现volatile原子性)