美文网首页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(无锁技术)

    CAS(Compare and Swap),即比较并替换,实现并发算法时常用到的一种技术,CAS是通过unsafe...

  • 自旋锁

    简单回顾一下CAS算法 CAS算法即compare and swap(比较与交换),是一种有名的无锁算法。无锁编程...

  • java中CAS实现

    CAS介绍 要实现无锁(lock-free)的非阻塞算法有多种实现方法,其中CAS(比较与交换,Compare a...

  • CAS乐观锁

    CAS,compare and Swap,乐观锁技术。

  • 面试必备之深入理解自旋锁

    1、自旋锁 简单回顾一下CAS算法CAS算法 即compare and swap(比较与交换),是一种有名的无锁算...

  • 2020-09-27

    Java 高并发之无锁(CAS) 本篇主要讲 Java中的无锁 CAS ,无锁 顾名思义就是 以不上锁的方式解决并...

  • CAS

    CAS(Compare And Swap)即比较并交换,CAS 是乐观锁技术,当多个线程尝试使用 CAS 同时更新...

  • 并发队列-无界阻塞队列LinkedBlockingQueue原理

    一、前言 前面介绍了使用CAS实现的非阻塞队列ConcurrentLinkedQueue,下面就来介绍下使用独占锁...

  • 多线程与高并发知识点简述

    CAS和Atomic包 CAS操作流程: JDK5之后发布了基于乐观锁思想的自旋锁(无锁)java.util.co...

  • 【java并发编程实战2】无锁编程CAS与atomic包

    1、无锁编程CAS 1.1、CAS CAS的全称是Compare And Swap 即比较交换,其算法核心思想如下...

网友评论

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

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