参考答案
1. 悲观锁(Pessimistic Lock)
- 线程每次在处理共享数据时都会上锁,其他线程想处理数据就会阻塞直到获得锁。
2. 乐观锁(Optimistic Lock)
- 线程每次在处理共享数据时都不会上锁,在更新时会通过数据的版本号等机制判断其他线程有没有更新数据。乐观锁适合读多写少的应用场景
3. 乐观锁与悲观锁的优缺点
- 乐观锁适用于读多写少的场景,可以省去频繁加锁、释放锁的开销,提高吞吐量
- 在写比较多的场景下,乐观锁会因为版本不一致,不断重试更新,产生大量自旋,消耗 CPU,影响性能。这种情况下,适合悲观锁。
以上,是Java面试题【乐观锁与悲观锁是什么】的参考答案。
输出,是最好的学习方法。
欢迎在评论区留下你的问题、笔记或知识点补充~
—end—