什么是乐观锁和悲观锁
时间: 2023-12-18 09:21:02 浏览: 140
hibernate乐观锁和悲观锁学习
乐观锁和悲观锁是在并发编程中用来处理多线程并发访问共享资源的两种不同策略。
悲观锁是一种较为保守的策略,它假设在并发情况下,共享资源很可能会被其他线程修改,因此在访问共享资源之前,会先对其进行加锁,确保其他线程无法修改资源。这样可以保证数据的一致性,但是也会造成较大的性能损失,特别是在高并发场景下。
乐观锁则是一种较为乐观的策略,它认为在并发情况下,共享资源很少会被其他线程修改,因此不对共享资源进行加锁。而是在更新资源时,先读取资源的版本号或者标识符,在更新之前再次校验该版本号或标识符是否发生变化。如果变化了,说明有其他线程已经修改了资源,当前线程的操作可能会产生冲突,就需要进行相应的处理(比如重试或放弃操作)。这种方式可以减少锁的竞争,提高并发性能。
总结起来,悲观锁适用于对数据更新频繁、冲突概率较高的场景;而乐观锁适用于对数据更新频率较低、冲突概率较低的场景。选择使用哪种锁取决于具体的应用场景和性能需求。
阅读全文