面试题:Jvm 的 synchronized 和 JDK 的 Lock

synchronized 和 Lock 的区别

  • 语法层面

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

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

    • 没有竞争时 ,synchronized 做了很多优化,如偏向锁、轻量级锁,性能不赖
    • 竞争激烈 时,Lock 的实现通常会提供更好的性能
相关推荐
zcfeng530几秒前
PHP升级
开发语言·php
亲爱的非洲野猪3 分钟前
从一次“小改动”到“大提升”:JVM堆内存与线程栈大小调优实践
jvm
m0_748252383 分钟前
Ruby 模块(Module)的基本概念
开发语言·python·ruby
羊小猪~~6 分钟前
【QT】-- QT基础类
开发语言·c++·后端·stm32·单片机·qt
专注数据的痴汉8 分钟前
「数据获取」全国民用运输机场吞吐量排名(2006-2024)
java·大数据·服务器·数据库·信息可视化
木卫二号Coding17 分钟前
Python-文件拷贝+文件重命名+shutil+记录
开发语言·python
悟空码字33 分钟前
无缝集成指南,SpringBoot三步接入华为云短信服务
java·springboot·编程技术·后端开发·华为云短信
bubiyoushang88835 分钟前
基于Q-learning的路径规划MATLAB仿真程序实现
开发语言·matlab
E_ICEBLUE39 分钟前
【2026 最新教程】Java 自动化提取 PDF 表格:从文本到 Excel/CSV 的全场景实现
java·pdf·自动化
C雨后彩虹41 分钟前
无向图染色
java·数据结构·算法·华为·面试