多线程&并发篇---第十一篇

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、CAS的原理
  • 二、CAS有什么缺点吗?
  • 三、引用类型有哪些?有什么区别?


前言


一、CAS的原理

CAS叫做CompareAndSwap,比较并交换,主要是通过处理器的指令来保证操作的原子性,它包含
三个操作数:

  1. 变量内存地址,V表示
  2. 旧的预期值,A表示
  3. 准备设置的新值,B表示
    当执行CAS指令时,只有当V等于A时,才会用B去更新V的值,否则就不会执行更新操作。

二、CAS有什么缺点吗?

CAS的缺点主要有3点:
ABA问题:ABA的问题指的是在CAS更新的过程中,当读取到的值是A,然后准备赋值的时候仍然是
A,但是实际上有可能A的值被改成了B,然后又被改回了A,这个CAS更新的漏洞就叫做ABA。只是
ABA的问题大部分场景下都不影响并发的最终效果。
Java中有AtomicStampedReference来解决这个问题,他加入了预期标志和更新后标志两个

你可能感兴趣的:(jvm,java,开发语言)