CAS
CAS,在Java并发应用中通常指CompareAndSwap或CompareAndSet,即比较并交换。
CAS是一个原子操作,它比较一个内存位置的值并且只有相等时修改这个内存位置的值为新的值,保证了新的值总是基于最新的信息计算的,如果有其他线程在这期间修改了这个值则CAS失败。CAS返回是否成功或者内存位置原来的值用于判断是否CAS成功。
JVM中的CAS操作是利用了处理器提供的CMPXCHG指令实现的。
优点:
- 竞争不大的时候系统开销小。
缺点:
- 循环时间长开销大。
- ABA问题。
- 只能保证一个共享变量的原子操作。
仅是学习笔记,难免出错,望不吝指点