首页 > 其他 > 详细

乐观锁/悲观锁

时间:2019-08-22 19:14:08      阅读:98      评论:0      收藏:0      [点我收藏+]

原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11395841.html

 

悲观锁

总是假设最坏的情况,每次拿数据的时候都认为别人会修改,每次拿数据都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁,共享资源每次只给一个线程使用,其他线程阻塞,用完后才把资源转让给其他线程。

比如:

RDBMS中的行锁、表锁等都是在操作之前先上锁

Java中synchronized和ReentrantLock等读占锁就是悲观锁思想的实现

 

乐观锁

总是假设最好的情况,每次拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号机制和CAS算法实现。乐观锁用于多读的应用类型,这样可以提高吞吐量。

比如:

Java中JUC.Atomic包下面的原子变量类就是使用了乐观锁的CAS实现

 

乐观锁/悲观锁

原文:https://www.cnblogs.com/agilestyle/p/11395841.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!