CAS 操作

CAS compare and set
是一个乐观锁的技术

每个CAS是一个 原子 操作
操作系统lock指令通过锁总线保证CAS的原子

CAS(内存地址,旧值,新值)
{
    if( *(内存地址) == 旧值){
      *(内存地址) = 新值;
      return success
    }
    return fail
}

ABA问题
通过控制变量值的版本来保证CAS的正确性

ABA问题举例说明
栈顶 HEAD - A-B-C 栈底
线程A TEMP = B ; (此时线程B获取了运行时间片) HEAD.NEXT = TEMP;
线程B POP(); POP(); PUSH(A) -> HEAD - A - C
线程A 继续执行 HEAD.NEXT = TEMP; -> HEAD- B;
此时 栈就出现了错误,不是预期的 HEAD - B -C 而是 HEAD- B;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 该文章属于《Java并发编程》系列文章,如果想了解更多,请点击《Java并发编程之总目录》 前言 在上一篇文章中我...
    AndyJennifer阅读 1,100评论 0 2
  • 首先什么是原子操作? 原子本意是“不能被进一步分割的最小粒子”,而原子操作意为”不可被中断的一个或一系列操作”; ...
    囧囧有神2号阅读 12,462评论 0 7
  • CAS Compare And Swap.比较并交换.java中的同步器就是基于CAS技术实现的,为什么它能保证操...
    薛云龙阅读 328评论 0 0
  • CAS : Compare and swap ,是原子操作的一种。 CAS操作包含三个值,分别是 V(内存位置)...
    walker_liu_fei阅读 1,271评论 0 0
  • 万丈红尘岁月疏, 相思天涯陌路. 百般离合杯素酒, 彩衣零落散秋. 只消满池稀荏苒, 以度百转千愁. 不思缱绻月离...
    汀澜_893c阅读 106评论 0 0