notesArea/Java/多线程/乐观锁.md

乐观锁

乐观锁假设并发冲突概率比较小,因此在操作数据之前不加锁,只在操作提交的时候检测冲突。

工作原理

乐观锁一般通过以下两种方式实现:

版本号

  1. 每条记录维护着自己的版本号
  2. 读取记录时,读取版本号
  3. 对记录进行操作
  4. 更新记录的时候,再次读取版本号,检查是否与读取时的版本号一致
  5. 如果一致,则更新记录,同时版本号加一
  6. 如果不一致,则重新读取记录并尝试再次进行更新

时间戳

同版本号思路一致,知识将版本号改成了时间戳

适用场景

适合读多写少或者冲突概率较低的场景。

大纲
文件