背景

一条数据不能同时被两个或者多个线程修改。保证数据的有效性。比如下订单后,扣库存数量就需要这样的保证。

过程

  • 数据库中数据
    Mysql的select for update理解

  • 测试方法1:testForUpdate1
    Mysql的select for update理解
    分析:代码在if判断处,打上断点。

  • 测试方式2:testForUpdate2
    Mysql的select for update理解

  • 测试过程描述
    先跑测试方法1,一直卡在断点处。这个时候直接执行测试方法2。

  • 测试结果
    Mysql的select for update理解

  • 测试结果分析
    由于测试方法1先把id为27的数据上锁。测试方法2能够读到数据,但是不能修改id为27的数据。

小结

记录对一个小知识的理解过程。select for update。 这是一个悲观锁。它解决了什么问题呢?并发问题。那还有其他方式解决吗?可以使用乐观锁的方式。如果是集群或者分布式环境,也可以尝试使用分布式锁来解决并发问题。

相关文章:

  • 2022-12-23
  • 2022-01-03
  • 2022-12-23
  • 2021-11-28
  • 2021-07-12
  • 2021-09-09
  • 2022-12-23
猜你喜欢
  • 2022-01-07
  • 2021-10-05
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-25
  • 2022-03-06
相关资源
相似解决方案