美文网首页
CAS简化理解

CAS简化理解

作者: dingking | 来源:发表于2020-11-04 10:16 被阅读0次

CAS 介绍

Compare and Swap,即比较再交换,其中有内存值V,旧值A,需要置换的值B,当V=A时,就可以把V值交换成B,如果不相等继续尝试。

举例描述

其实V就是当前内存里面的值,而旧值A就是在执行更新操作的时候在内存取出来的值,而只有在更新前取出来的值等于V值是才把B值置换过去,如果不相等就说明被别的线程给修改,那么就先取出当前的值作为A,继续进行比较置换。
比如要修改数据库里面存储某个用户的账户金额信息如:

id amount version
1 100 1

如果充值20,在修改时候先取出数据,这个时候amount=100 version=1,以版本号作为标准则A=1,V=1,B=2,进行修改的时候version=1即A=V,则可以进行修改amount=100+20,version=B=2,如果A!=V那么就继续重新获取version作为A重试。至于是否一直尝试,可以设置超时时间或者尝试次数,失败的后续用定时任务补偿。

相关文章

  • CAS简化理解

    CAS 介绍 Compare and Swap,即比较再交换,其中有内存值V,旧值A,需要置换的值B,当V=A时,...

  • Java Util Concurrent并发编程(六)CAS和j

    深入理解CAS 什么是CAS?CAS的全称是compareAndSet,比较并交换一般通用的用法就是如果对象是期望...

  • JMM内存模型,JVM分配策略,Volatile+AtomicX

    为了深入理解CAS的,我们从以下几个维度去探究CAS,然后再去考虑为什么出现ABA问题。 CAS是什么? 测试用例...

  • 深入理解CAS(乐观锁)

    深入理解CAS(乐观锁) java使用CAS之前 在JDK5之前Java语言是靠synchronized关键字保证...

  • JUC面试问题

    请谈谈你对 volatile 的理解 JMM 你谈谈 CAS 你知道吗? CAS缺点 ABA 问题 集合线程不安全...

  • JAVA里面的CAS

    什么是CAS cas是compareandswap的简称,语意理解就是比较并更新,简单来说:从某一内存上取值V,和...

  • 读书24

    简化:如何简单工作与生活 爱德华·德博诺 第3章 >> 理解之前的简化是过于简单,理解之后的简化才是简单 >> 过...

  • 2019-01-13

    1.个人对CRISPR-Cas9筛选的理解:CRISPR-Cas9筛选:使用阴性筛选,阳性筛选和对照筛选,以文章中...

  • 深入理解CAS

    CAS简介 CAS指的是Compare And Swap或者Compare And Set也即是比较并交换。CAS...

  • Java中CAS理解

    1、什么是原子操作?如何实现原子操作? 假定有两个操作A和B(A和B可能都很复杂),如果从执行A的线程来看,当另一...

网友评论

      本文标题:CAS简化理解

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