面试题:Jvm 的 synchronized 和 JDK 的 Lock

synchronized 和 Lock 的区别

  • 语法层面

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

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

    • 没有竞争时 ,synchronized 做了很多优化,如偏向锁、轻量级锁,性能不赖
    • 竞争激烈 时,Lock 的实现通常会提供更好的性能
相关推荐
我是一颗柠檬19 小时前
【Redis】Redis分布式锁Day13(2026年)
java·redis·分布式·缓存
小小测试开发1 天前
安装 Python 3.10+
开发语言·人工智能·python
AAA大运重卡何师傅(专跑国道)1 天前
【无标题】
开发语言·c#
XBodhi.1 天前
Visual Studio C++ 语法错误: 缺少“;”(在“return”的前面)
开发语言·c++·visual studio
LSssT.1 天前
【01】Python 机器学习
开发语言·python
心之伊始1 天前
Java 后端接入大模型:从 Token、并发到推理成本的完整估算方法
java·spring boot·性能优化·大模型·llm
l1t1 天前
DeepSeek总结的使用实体-组件-系统和基于存在性处理进行Python编程39-40
开发语言·python
BlackTurn1 天前
技术经理投标
java
曾阿伦1 天前
Python 搭建简易HTTP服务
开发语言·python·http
YG亲测源码屋1 天前
java配置环境变量、jdk环境变量配置、java环境变量设置方法
java·开发语言