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

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

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

参考答案:

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

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

相关推荐
程序员老邢3 分钟前
【重启日记】第五周复盘:持续突破高位,把 “平台期” 变成 “上升期”
java·运维·经验分享·ai·devops
weixin_419658315 分钟前
RabbitMQ 应用问题
java·分布式·中间件·rabbitmq
Maiko Star5 分钟前
跑通第一个Spring AI 应用
java·后端·spring·springai
2501_913061346 分钟前
网络原理知识(8)
java·网络·面试
我命由我1234513 分钟前
Android 广播 - 显式广播与隐式广播
android·java·开发语言·java-ee·kotlin·android studio·android-studio
不知名的老吴14 分钟前
聊一聊年轻的编程语言Golang与Rust
开发语言·golang·rust
SimonKing14 分钟前
frontend-dev vs ui-ux-pro-max:谁才是Vibe Coding前端开发的“最强辅助”?
java·后端·程序员
小谢小哥16 分钟前
57-数据同步方案详解
java·后端·架构
小何code17 分钟前
【Python零基础入门】第6篇:Python字符串入门:创建、索引与切片
开发语言·python