CAS
什么是原子(atomic)操作:
多线程中的原子操作类似于数据库中的同时执行AB两个语句,要么同时执行成功,要么同时执行失败。
synchronized 的不足:
- syn是基于阻塞的锁机制,颗粒度还是比较大 的。
- 如果被阻塞的线程优先级很高怎么办。
- 拿到锁的线程一直不释放锁怎么办。
- 如果出现大量竞争会消耗CPU,同时带来死锁或其他安全隐患。
用syn也可以实现原子操作不过不太合适,目前CPU指令级别实现了原子性的比较和交换(Conmpare And Swap
)操作(CAS不是锁
只是CPU提供的一个原子性操作指令哦切记)。
CAS的实现步骤如下
- 获得L(内存地址)上的数据初始值D1
- 对D1的数据进行增减后最终等到D2<