美文网首页
CAS实现volatile原子性

CAS实现volatile原子性

作者: shoulda | 来源:发表于2018-06-30 14:44 被阅读0次

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

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原子性

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

  • 死磕Java——CAS

    一、死磕Java——CAS 前面我们说到volatile不保证原子性,解决办法就是使用AtomicInteger代...

  • Java 复习笔记

    线程和进程的关系? 多线程 原子性、可见性、有序性 1.ThreadLocal 2.volatile 3.CAS ...

  • 笔记:多线程并发编程(2)CAS 、阻塞队列、线程池

    CAS (Compare and swap )原子性操作(乐观锁) CAS 是使用现代cpu的cas 指令实现的原...

  • Java ReentrantLock锁机制概念篇

    分享Java锁机制实现原理,细节涉及volatile修饰符、CAS原子操作、park阻塞线程与unpark唤醒、双...

  • CAS

    之前讲锁的实现的时候讲到了CAS,但没有详细的讲述CAS是什么,只是说明了CAS能保证原子性,那么原子性是什么?C...

  • 并发--无锁(cas+volatile)

    本章内容: CAS 与 volatile 原子整数 原子引用 原子累加器 Unsafe 1、问题提出 扣款方法wi...

  • 并发编程三:锁

    一、CAS 1.CAS原理 CAS全称为Compare And Swap,比较与交换。CAS是原子性操作的一种实现...

  • JUC下的atomic包

    AtomicInteger类提供了原子性的访问和更新,而它的原子性实现原理则是基于CAS(compare and ...

  • java如何实现原子操作CAS

    在Java中可以通过锁和循环CAS的方式来实现原子操作。 使用循环CAS实现原子操作 JVM中的CAS操作正是利用...

网友评论

      本文标题:CAS实现volatile原子性

      本文链接:https://www.haomeiwen.com/subject/igjayftx.html