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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,547评论 11 349
  • Java8张图 11、字符串不变性 12、equals()方法、hashCode()方法的区别 13、...
    Miley_MOJIE阅读 9,196评论 0 11
  • volatile 关键字解析 原文出处: 海子volatile 这个关键字可能很多朋友都听说过,或许也都用过。在 ...
    常青大侠阅读 3,746评论 0 4
  • “我的孩子太害羞了。只要有人和她说话,她就会躲在后,并且不回答别人。每个人都知道她有多害羞。这意味的自尊低吗?我...
    淼糖妈阅读 3,196评论 0 0
  • 温柔懂事是女人永恒的杀手锏,更是不漂亮的姑娘可以后天获得的核心竞争力。很明显,骄傲,任性,虚荣等等缺点更容易发生在...
    Arielhasasecret阅读 1,567评论 0 0

友情链接更多精彩内容