什么是乐观锁和悲观锁
悲观锁,顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。悲观锁适用于并发竞争很厉害,写比较多的操作。
select * from account where name=”xxx” for update
for update)select * from account where name=”xxx” lock in share mode
update account set price=100,version=2 where version=1
当且仅当 V 的值等于 A时,CAS通过原子方式用新值B来更新V的值,否则不会执行任何操作(比较和替换是一个原子操作)。一般情况下是一个自旋操作,即不断的重试。CAS需要考虑数据变化“ABA”的问题,这时可以检测是否被改过。(参见java.util.concurrent.atomic.AtomicStampedReference )
原文:https://www.cnblogs.com/kbian/p/12445845.html