简单理解CAS以及compareAndSet

简介:

CAS:Compare and Swap, 比较并交换。

CAS的作用是将指定内存地址的内容与所给的某个值相比,如果相等,则将其内容替换为指令中提供的新值,如果不相等,则更新失败。这一比较并交换的操作是原子的,不可以被中断。CAS是通过硬件命令保证了原子性,且硬件级别的原子性比高级语言的软件级别的运行速度要快地多。虽然CAS也包含了多个操作,但其的运算是固定的(就是个比较),这样的锁定性能开销很小。

CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。
image.png

CAS有效地说明了“我认为位置V应该包含值A;如果包含该值,则将B放到这个位置;否则,不要更改该位置,只告诉我这个位置现在的值即可。

AtomicInteger类compareAndSet通过原子操作实现了CAS操作,最底层基于汇编语言实现。
public final boolean compareAndSet(V expect, V update)
工作原理如图:image.png
内存值跟期望值相同时,
true.png
内存值跟期望值不同时,false.png

目录
相关文章
|
存储 资源调度 安全
H3C CAS系列 一、CAS初认识
对于虚拟化,可能第一时间大家想到的是虚拟机,而对于虚拟机大家可能第一时间想到的就是我们大多数人都可能比较熟悉的VMware系列产品,比如常用VMware Workstation Pro 、VMware esxi。 而今天我带大家一起认识一款我们国产的虚拟化软件 H3C CAS。
1776 0
|
6月前
|
Java API
CAS的超~详细介绍
CAS的超~详细介绍
|
6月前
|
存储 算法 Java
|
6月前
|
算法
原子操作CAS
原子操作CAS
42 0
|
6月前
|
算法 Java 关系型数据库
CAS
本文主要讲解java中cas的概念及原理
64 0
什么是 CAS? CAS 有哪些缺点?ABA 问题是什么?
什么是 CAS? CAS 有哪些缺点?ABA 问题是什么?
202 0
|
算法 安全 Java
简单理解CAS
简单理解CAS
276 0
简单理解CAS
|
安全 API
对CAS的理解
对CAS的理解
|
算法 Java 数据库
深入理解CAS
深入理解CAS
205 0
深入理解CAS