美文网首页Java面试常见问题
介绍下CAS(无锁技术)

介绍下CAS(无锁技术)

作者: 2_shou | 来源:发表于2018-06-07 17:08 被阅读0次

    CAS(Compare and Swap),即比较并替换,实现并发算法时常用到的一种技术,CAS是通过unsafe类的compareAndSwap方法实现的。
    CAS的思想很简单:三个参数,一个当前内存值V、旧的预期值A、即将更新的值B,当且仅当预期值A和内存值V相同时,将内存值修改为B并返回true,否则什么都不做,并返回false。

    CAS缺点

    CAS存在一个很明显的问题,即ABA问题。

    问题:如果变量V初次读取的时候是A,并且在准备赋值的时候检查到它仍然是A,那能说明它的值没有被其他线程修改过了吗?

    如果在这段期间曾经被改成B,然后又改回A,那CAS操作就会误认为它从来没有被修改过。针对这种情况,java并发包中提供了一个带有标记的原子引用类AtomicStampedReference,它可以通过控制变量值的版本来保证CAS的正确性。


    更多关于CAS的内容请转步至以下文章:
    深入浅出CAS 占小狼
    关于Java面试,你应该准备这些知识点 占小狼

    相关文章

      网友评论

        本文标题:介绍下CAS(无锁技术)

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