简单说一下CAS

简介: 简单说一下CAS

CAS全称 Compare And Swap,比较与交换,是乐观锁的主要实现方式。CAS 在不使用锁的情况下实现多线程之间的变量同步。ReentrantLock 内部的 AQS 和原子类内部都使用了 CAS。

CAS算法涉及到三个操作数:

  • 需要读写的内存值 V。
  • 进行比较的值 A。
  • 要写入的新值 B。

只有当 V 的值等于 A 时,才会使用原子方式用新值B来更新V的值,否则会继续重试直到成功更新值。

以 AtomicInteger 为例,AtomicInteger 的 getAndIncrement()方法底层就是CAS实现,关键代码是 compareAndSwapInt(obj, offset, expect, update),其含义就是,如果obj内的valueexpect相等,就证明没有其他线程改变过这个变量,那么就更新它为update,如果不相等,那就会继续重试直到成功更新值。


相关文章
|
存储 编译器 API
锁与原子操作CAS
锁与原子操作CAS
151 0
|
存储 资源调度 安全
H3C CAS系列 一、CAS初认识
对于虚拟化,可能第一时间大家想到的是虚拟机,而对于虚拟机大家可能第一时间想到的就是我们大多数人都可能比较熟悉的VMware系列产品,比如常用VMware Workstation Pro 、VMware esxi。 而今天我带大家一起认识一款我们国产的虚拟化软件 H3C CAS。
1779 0
|
7月前
|
算法 调度 数据安全/隐私保护
什么是CAS锁
什么是CAS锁
90 0
|
7月前
|
Java API
CAS的超~详细介绍
CAS的超~详细介绍
|
7月前
|
存储 算法 Java
|
7月前
|
算法
原子操作CAS
原子操作CAS
44 0
|
7月前
|
缓存 Linux API
原子操作CAS与锁实现
原子操作CAS与锁实现
|
7月前
|
存储 缓存 算法
理解原子操作与CAS锁
理解原子操作与CAS锁
85 0
|
7月前
|
算法 Java 关系型数据库
CAS
本文主要讲解java中cas的概念及原理
68 0