乐观锁的应用

乐观锁的话,我们都知道是什么原理,但是它在开发中到底是如何应用的呢?其实并没有想象中那么复杂,反而使非常简单。

CAS,需要比较内存位置、预期值、新值,在java的concurrent系列中有所应用。但在开发中更常用的版本号机制。

乐观锁中版本号机制的应用,其实非常简单,就是在数据库的表中多加了一个字段:version(版本号)。每次修改时比较数据库的version是否修改过即可。

在所有的修改操作中添加条件:
where version = ?

“?”里是查询时,拿到的版本号

version bigint(20) 数据版本:乐观锁

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
乐观锁和悲观锁是在并发控制中常用的两种策略。乐观锁并未真正加锁,它通过记录数据版本来实现并发控制。在更新数据时,乐观锁先读取数据的版本信息,然后再进行更新操作。如果在更新期间,其他事务已经修改了数据,那么当前事务的更新操作就失败,需要重新尝试。乐观锁的优点是效率高,适合应用在读为主的场景下。 相反,悲观锁依赖数据库提供的锁机制,它在读取数据数据进行加锁,确保其他事务不能修改数据。这种策略的缺点是效率相对较低,因为它对系统的吞吐性能产生一定的影响。悲观锁适用于写为主的场景,因为它可以有效地保证数据的一致性。 因此,乐观锁和悲观锁的应用主要取决于业务场景和系统需求。如果并发读取较多,并且对数据一致性要求不高,可以选择乐观锁。而如果并发写入较多,并且对数据一致性要求较高,可以选择悲观锁。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [乐观锁和悲观锁全面总结及实际应用介绍](https://blog.csdn.net/dmlcq/article/details/127655568)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_43751710

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值