悲观锁认为,查询就是为了修改,必须要锁住,不管我修改不修改,在我事务未提交之前,我不允许其他线程对我的数据进行任何操作,只有我的事务提交,或回滚我才释放锁。实现是在sql后面加for update
例如 :synchronize
乐观锁认为,我不关心你查询是为了什么,放心大胆的让线程去操作,出了问题再处理,它的实现方式是在表里加一个version字段 查询时查version,修改时version最为条件。
实现方式有二
1.时间戳
2.版本号
例如:redis
悲观锁认为,查询就是为了修改,必须要锁住,不管我修改不修改,在我事务未提交之前,我不允许其他线程对我的数据进行任何操作,只有我的事务提交,或回滚我才释放锁。实现是在sql后面加for update
例如 :synchronize
乐观锁认为,我不关心你查询是为了什么,放心大胆的让线程去操作,出了问题再处理,它的实现方式是在表里加一个version字段 查询时查version,修改时version最为条件。
实现方式有二
1.时间戳
2.版本号
例如:redis
本文标题:乐观锁悲观锁如何理解?如何实现的?优缺点是什么
本文链接:https://www.haomeiwen.com/subject/ycuppctx.html
网友评论