锁机制存在以下问题:
(1)线程上下文切换代价
(2)线程竞争锁发送的阻塞
(3)扰乱线程优先级,高优先级线程等待低优先级线程释放锁
CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。
CAS是硬件CPU提供的元语,它的原理:我认为位置 V 应该包含值 A;如果包含该值,则将 B 放到这个位置;否则,不要更改该位置,只告诉我这个位置现在的值即可。
CAS缺点
CAS虽然很高效的解决原子操作,但是CAS仍然存在三大问题。ABA问题,循环时间长开销大和只能保证一个共享变量的原子操作
1. ABA问题
2. 循环时间长开销大
3. 只能保证一个共享变量的原子操作