什么是CAS

简单明了的白话文,俗称说人话,每次都说的那么高大上,让我们难以理解,所以我在此记录一下,我的理解!

1、CAS是什么?

1.CAS翻译过来就是(比较交换)的意思,比较交换好理解吧,没错,就是我们理解的那种意思。就比如你本来想买西瓜,你想的西瓜是10块钱一个,然后你就拿10块钱去商家那里买,然后你一(比较)说:为啥你家的西瓜15块一个,你给老子等着,老子回家拿钱去,然后就等到钱拿到了,一看你家西瓜又涨价了,周而复始的回家拿钱,然后你终于拿到了西瓜,这就是(交换)

2、CAS到底做了什么事?

众所周知(不知道的你可以回家把书在看看),

java里面有乐观锁和悲观锁,

悲观锁:悲观锁就是一个线程拿到锁以后,其他线程就被挂起,除非拿到锁的线程,释放锁,其他线程在抢锁,周而复始,但是这样虽然保证了数据的一致性、唯一性,但是性能方面却很差,因为每次都只有一个线程进去干活,其他线程暂时等待!

乐观锁:乐观锁是什么呢?那就是我们今天的主角,CAS闪亮登场,我们的CAS的基本值有三个:内存地址、预期原值、新值

比如我们有两个线程同时争夺,A=1   第一个线程: A=A+2,第二个线程:A=A+1,怎么保证A一定是4呢?

首先两个线程会拿到内存地址和预期原值(也就是A=1),然后判断第一个线程如果先运行了,那么A就变成了3,这时候第二个线程发现内存地址是一样,但是预期的原值不一样,这个时候他就会执行失败返回,然后拿新值以后,再次循环这时候跟预期原值比较就一样了,然后就可以加1了

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值