CAS 即 compare and swap 比较和交换
有三个值, 预期值 (旧值), 更新值 (要更新为的值), 内存值 (主内存的值)
当预期值等于内存值时, 才会把更新值更新到主内存的内存值, 否则什么都不做
CAS 利用了 unsafe 类和自旋锁 (当更新失败后, 会一直尝试再次更新), 实现了变量的原子操作
CAS 缺点
- 变量并发修改频率高时, cpu 开销大 (因为要不断轮询, 尝试更新)
- 只能保证一个变量的原子操作
- 有 ABA 问题 (可以使用版本号解决)
CAS 即 compare and swap 比较和交换
有三个值, 预期值 (旧值), 更新值 (要更新为的值), 内存值 (主内存的值)
当预期值等于内存值时, 才会把更新值更新到主内存的内存值, 否则什么都不做
CAS 利用了 unsafe 类和自旋锁 (当更新失败后, 会一直尝试再次更新), 实现了变量的原子操作
CAS 缺点