谈谈乐观锁

谈谈乐观锁
乐观锁,悲观锁,并不是特指什么具体的锁,而是一种策略,思想。
乐观锁就是比较乐观,认为自己在使用数据的时候, 不会有其他线程对其进行修改,所以就不会加锁,说白了乐观锁,根本没有锁,是一种无锁编程。
乐观锁,只是在更新数据之前,看一下数据有没有被别的线程修改过,如果没有数据没有被别的线程修改过,也不能说的这么绝对,因为存在ABA的问题,就更新数据;如果数据被别的线程修改过了,就不更新,进行重试。
CAS是乐观锁实现的核心机制之一。
CAS 是硬件层面,CPU提供的原子指令。由于该指令在硬件层面实现,因此效率非常高
像乐观锁适用于写比较少的情况下,即冲突真的很少发生的时候,这样可以省去锁的开销,加大了系统的整个吞吐量。但如果经常产生冲突,上层应用会不断的进行重试,这样反倒是降低了性能,所以这种情况下用悲观锁就比较合适。

你可能感兴趣的:(JUC并发编程,java,数据库,开发语言,JUC)