乐观锁和悲观锁

乐观锁和悲观锁

原文:常用锁的种类以及解决方案

2021年3月29日09:44:40

乐观锁

数据修改步骤

  1. 查询出需要更新的数据
  2. 进行修改操作
  3. 保存

并发问题:线程 A 进行到 步骤2结束,线程 B 对已经数据进行了修改操作,这时线程 A 的步骤3可能就存在问题

应该给出提示:当前您操作的数据一杯其他人修改,请重新查询确认

解决

  • 数据库表机构增加 version 字段或 更新时间
  • 当保存时对 version 或 最新更新时间比较
  • version 或 更新时间一致则进行更新操作
  • 如果不一致,则给出提示

乐观锁

Java 中乐观锁机制:

  • CAS 类(CountDownLatch、AtomicXXX)

悲观锁

悲观锁从读数据的时候就显示地去加锁,直到数据最后更新完成,锁才会被释放

  • synchronized、ReentrantLock

总结:

  • 悲观锁从读取数据那一刻就加了锁
  • 适用于读少写多情况
# 理论   

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×