面试题:Jvm 的 synchronized 和 JDK 的 Lock

synchronized 和 Lock 的区别

  • 语法层面

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

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

    • 在没有竞争时 ,synchronized 做了很多优化,如偏向锁、轻量级锁,性能不赖
    • 在竞争激烈 时,Lock 的实现通常会提供更好的性能
相关推荐
Nebula_g14 分钟前
JavaSE加强:Stream流
java·开发语言·windows·stream·javase·流
估值探索者15 分钟前
【Python量化系统工程实战 #08】从脚本到生产:量化系统上线 checklist 的最小闭环
java·开发语言·jvm·python·数据挖掘·数据·股票数据api接口
Wang's Blog19 分钟前
Java框架 SpringCloud 快速入门: Nacos 环境隔离
java·开发语言·spring cloud
万年咸鱼30 分钟前
解决C语言的内存释放机制
java·c语言·python
破芽1 小时前
python知识点整理02
开发语言·python
一木 之林1 小时前
DeepSeek Agent 开发(三)
java·大数据·linux
denlaku1 小时前
JDK 10 新特性详解
java·开发语言
cfm_29141 小时前
Java常见加密算法全解
开发语言
程序员耄耋1 小时前
JDK21的下载与安装(2025.8.2)
java
墨染天姬1 小时前
【人工智能训练师】python语法二
开发语言·人工智能·python