什么是 CAS?
2024-08-31 18:24:16
CAS 是 compare and swap 的缩写,即我们所说的比较交换。
cas 是一种基于锁的操作,而且是乐观锁。在 java 中锁分为乐观锁和悲观锁。悲观锁是将资源锁住,等一个之前获得锁的线程释放锁之后,下一个线程才可以访问。而乐观锁采取了一种宽泛的态度,通过某种方式不加锁来处理资源,比如通过给记录加 version 来获取数据,性能较悲观锁有很大的提高。
CAS 操作包含三个操作数 —— 内存位置(V)、预期原值(A)和新值(B)。如果内存地址里面的值和 A 的值是一样的,那么就将内存里面的值更新成 B。CAS是通过无限循环来获取数据的,若果在第一轮循环中,a 线程获取地址里面的值被b 线程修改了,那么 a 线程需要自旋,到下次循环才有可能机会执行。
java.util.concurrent.atomic 包下的类大多是使用 CAS 操作来实现的( AtomicInteger,AtomicBoolean,AtomicLong)。
最新文章
- de4dot3.14更新文件打包下载
- mysql通用包安装
- Codeforces Round #242 (Div. 2) C. Magic Formulas
- Mac系统安装jdk和maven
- poj 2348
- OFBIZ文章
- Blob未完成(待优化)
- QQ音乐API分析记录
- html5画图和本地存储
- 使用java API操作hdfs--拷贝部分文件到hdfs
- 201521123030 《Java程序设计》 第14周学习总结
- [Scikit-learn] 1.2 Dimensionality reduction - Linear and Quadratic Discriminant Analysis
- Android 安全加密
- 对N各集合中的任意元素进行排列组合问题
- python基础-函数(9)
- 【python小练】0017-将xls文件内容写入xml文件中
- Flask----基础
- HttpServletRequestWrapper
- 使用阿里云Python SDK管理ECS安全组
- ECCV 2018 | 旷视科技提出GridFace:通过学习局部单应变换实现人脸校正