面试题:Jvm 的 synchronized 和 JDK 的 Lock

synchronized 和 Lock 的区别

  • 语法层面

    • synchronized 是关键字,源码在 jvm 中,用 c++ 语言实现
    • Lock 是接口,源码由 jdk 提供,用 java 语言实现
    • 使用 synchronized 时,退出同步代码块锁会自动释放 ,而使用 Lock 时,需要手动调用 unlock 方法释放锁
  • 功能

    • 二者均属于悲观锁、都具备基本的互斥、同步、锁重入功能
    • Lock 提供了许多 synchronized 不具备的功能,例如获取等待状态、公平锁、可打断、可超时、多条件变量
    • Lock 有适合不同场景的实现,如 ReentrantLock, ReentrantReadWriteLock
  • 性能层面

    • 没有竞争时 ,synchronized 做了很多优化,如偏向锁、轻量级锁,性能不赖
    • 竞争激烈 时,Lock 的实现通常会提供更好的性能
相关推荐
Kristrina几秒前
我用C++入门教程,学会了基础编程
开发语言·c++
lcj25111 分钟前
string类从编译链接到构造析构,解决多文件重复定义+运算符重载,面试必考!
开发语言·c++·面试·职场和发展
圣殿骑士-Khtangc2 分钟前
Python列表、字典、集合高阶操作精讲:从基础到工程实战
开发语言·python
无聊的老谢4 分钟前
构建高扩展性的动态指标计算引擎:策略模式与表达式树的实战应用
java·策略模式·计算引擎
Devin~Y10 分钟前
互联网大厂Java面试实录:Spring Boot、Kafka、Redis一致性与Spring AI RAG(小Y的翻车现场)
java·spring boot·redis·kafka·mybatis·hibernate·jpa
IT空门:门主11 分钟前
Java 设计模式实战:模板方法 + 工厂 + 策略模式重构支付系统
java·设计模式·策略模式
Gauss松鼠会13 分钟前
GaussDB(DWS)数据融合:Oracle增量数据迁移到DWS
java·数据库·算法·oracle·性能优化·gaussdb
摩托艇旁的程序猿13 分钟前
Idea的RestfulTool-Plus插件快捷键不起作用
java·ide·intellij-idea
Ww.xh14 分钟前
ESP8266接入百度云MQTT完整指南
java·dubbo·百度云
geovindu17 分钟前
go: N-Barrier Pattern
开发语言·后端·设计模式·golang·屏障模式