【多线程面试题十八】、说一说Java中乐观锁和悲观锁的区别

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。

面试官:说一说Java中乐观锁和悲观锁的区别

参考答案:

悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。Java中悲观锁是通过synchronized关键字或Lock接口来实现的。

乐观锁:顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据。乐观锁适用于多读的应用类型,这样可以提高吞吐量。在JDK1.5 中新增 java.util.concurrent (J.U.C)就是建立在CAS之上的。相对于对于 synchronized 这种阻塞算法,CAS是非阻塞算法的一种常见实现。所以J.U.C在性能上有了很大的提升。

相关推荐
一个天蝎座 白勺 程序猿几秒前
Python(14)Python内置函数完全指南:从基础使用到高阶技巧
开发语言·python
张立龙6663 分钟前
单链表各种操作实现(数据结构C语言多文件编写)
c语言·开发语言·数据结构
写bug写bug7 分钟前
彻底搞懂如何通过 ZooKeeper 实现注册中心
java·后端·zookeeper
火山上的企鹅16 分钟前
异形遮罩之QML中的 `OpacityMask` 实战
开发语言·qml·opacitymask
写bug写bug18 分钟前
try-catch应该写在for循环里面还是外面?
java·后端
TOWNST23 分钟前
正则表达式使用知识(日常翻阅)
java·python·正则表达式
满怀101526 分钟前
【Python浅拷贝与深拷贝详解】
开发语言·python
不辉放弃27 分钟前
pycharm中调试功能讲解
开发语言·python·pycharm
liwulin050634 分钟前
【WORD】批量将doc转为docx
开发语言·c#·word