CAS实现volatile原子性

2018-06-30  本文已影响0人  shoulda

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

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锁进行同步。

上一篇 下一篇

猜你喜欢

热点阅读