多线程之乐观悲观锁

Posted huayuxiaoxiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程之乐观悲观锁相关的知识,希望对你有一定的参考价值。

乐观锁:认为数据修改产生冲突的概率并不大,所以不会先获取锁,一般都是使用版本号或者时间戳来标记,若A和B同时修改数据,当A修改完毕的同时将时间戳也替换为自己修改的时间戳,则B去修改时就会发现此条数据已经被修改过,则此次B则无法修改

  优点:不对数据加锁,只有在对数据进行修改操作时才会进行校验不会影响服务器性能,适用于查询较多的业务场景

  确定:因为是用过人为去操控的,如果有其余非人为操控的事物混入则可能会发生一些错误

悲观锁:认为数据经常性的出现变动,会在修改前获取锁,使用其余事物从而不能修改数据

  优点:悲观锁利用数据库中的锁机制来实现数据变化的顺序执行,锁定指定的数据行,适用于修改较为频繁的应用场景

  缺点是:一旦加锁以后,其他事物不能对加锁数据进行除查询以外的所有操作,如果当前事物执行周期较长,其他事物就会一直等待,影响性能。

以上是关于多线程之乐观悲观锁的主要内容,如果未能解决你的问题,请参考以下文章

并发编程--锁

多线程之 悲观锁,乐观锁

多线程之乐观悲观锁

Java多线程系列---“基础篇”13之 乐观锁与悲观锁

JUC - 多线程之悲观锁乐观锁,读写锁(共享锁独享锁),公平非公平锁,可重入锁,自旋锁,死锁

Java多线程:乐观锁悲观锁自旋锁