多线程,锁的策略
CAS
什么是CAS
CAS:全称Compare and swap,字面意思:”比较并交换“,一个 CAS 涉及到以下操作:
我们假设内存中的原数据V,旧的预期值A,需要修改的新值B。
-
比较 A 与 V 是否相等。(比较)
-
如果比较相等,将 B 写入 V。(交换)
-
返回操作是否成功。
CAS有哪些应用
1.实现原子类
标准库中提供了 java.util.concurrent.atomic 包, 里面的类都是基于这种方式来实现的.
典型的就是 AtomicInteger 类. 其中的 getAndIncrement 相当于 i++ 操作.
AtomicInteger atomicInteger = new AtomicInteger(