码迷,mamicode.com
首页 > 其他好文 > 详细

黑马day11 悲观锁&乐观锁

时间:2015-07-01 10:15:12      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:

悲观锁:悲观锁悲观的认为每一次操作都会造成更新丢失问题,在每次查询时就加上排他锁
乐观锁:乐观锁会乐观的认为每次查询都不会造成更新丢失.利用一个版本字段进行控制
 查询非常多,修改非常少,使用乐观锁

 修改非常多,查询非常少,使用悲观锁

技术分享技术分享

第一张图的解释:

小zhang想在一个游戏网站买装备,此时游戏网站会去重定向到银行(假设是建设银行),然后银行再重定向会这个游戏网站.

但是小zhang点击充值的时候由于网页很慢,点击了好几下.....这个时候为了防止银行的钱过多的充值到小zhang的用户,银行会

设置一个callback属性,看这个属性的值如果是1了就不打钱了,如果检测到callback的值是0就打钱给小zhang。实际操作中,

会出现多线程的查询。假设有个order表还有一个account表。order表中有id account_id state money属性,account中有id money属性。如果打钱给了小zhang,那么order表中的state设置为1,表明已经打钱给了小zhang,然后设置money=money+100,假设银行查询了向此,第一次查询到用户的state是,0,money是0,那么就打钱,第二次检测到了state是1就不会打钱了。但是程序是并发的,第一次检查用户状态是0,然后并发到第二次查询,一看是也是0,那么就会出现问题。都是用查询那个隔离机制都不能控制了,这时候我们使用悲观锁,加上排它锁,其他就不能进来了.或者使用乐观锁,设置version的值



版权声明:本文为博主原创文章,未经博主允许不得转载。

黑马day11 悲观锁&乐观锁

标签:

原文地址:http://blog.csdn.net/u014010769/article/details/46702013

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!