乐观锁与悲观锁:并发控制
- 1、乐观锁
- 2、悲观锁
💖The Begin💖点点关注,收藏不迷路💖
|
乐观锁和悲观锁作为两种关键的同步机制,以截然不同的方式应对数据冲突。
1、乐观锁
定义:
乐观锁认为数据冲突不常发生,因此不直接加锁。它通过“比较-替换”的原子操作尝试更新数据。若更新时发现数据已被其他线程修改,则操作失败,需重试。
适用场景:
- 读多写少的场景。
优点:
- 减少锁的开销,提高系统吞吐量。
缺点:
- 冲突解决可能消耗额外资源,且在高冲突场景下性能受影响。
2、悲观锁
定义:
悲观锁认为数据冲突常发生,因此在操作数据前先加锁,确保数据的一致性和完整性。
适用场景:
- 写多读少或需要严格保证数据一致性的场景。
优点:
- 有效防止数据冲突,保证数据一致性。
缺点:
- 加锁和解锁开销大,高并发时可能导致线程阻塞,降低系统吞吐量。
💖The End💖点点关注,收藏不迷路💖
|