Java面试——乐观锁和悲观锁

乐观锁:我是狱警,我不怕你们来搞“劫狱”——更新,我连锁都懒得加,每次领导过来视察,我就验一下通行证(版本号,不可伪造),对上号,我就让进去。

悲观锁:我是狱警,我好怕他们来“劫狱”——更新,所以每次领导来视察——怕被后面的领导捷足先登,都得战战兢兢的把整个牢房——表,都得锁得死死地,谁都不能进来,连只苍蝇都不行,必须得这个领导完事了,才能放下一个进来。

上面一看,就能发现它们的差异:

① 乐观锁是个行级锁,悲观锁是表级锁;

② 乐观锁不对数据进行强制加锁,只是在更新数据的时候去校验下版本。增加吞吐量。

适用场景:

乐观锁:适用读多写少。

悲观锁:适用读少写多。

乐观锁实现方式:

1、版本号

2、CAS操作

 

你可能感兴趣的:(Java学习)