【Java 开发日记】我们来说一下 synchronized 与 ReentrantLock

【Java 开发日记】我们来说一下 synchronized 与 ReentrantLock 的

二、详细区别分析
1. 实现层面
synchronized:
Java 关键字,由 JVM 底层实现(通过 monitorenter/monitorexit 字节码指令)。
锁信息记录在对象头的 Mark Word 中。
ReentrantLock:
基于 AbstractQueuedSynchronizer(AQS) 实现的显式锁。
通过 CAS(Compare-And-Swap)和队列管理线程竞争。

3. 公平性选择
synchronized:仅支持非公平锁(线程竞争时随机获取锁)。
ReentrantLock:
公平锁:按等待时间顺序获取锁,避免线程饥饿,但性能较低。
非公平锁:允许插队,性能更高。
4. 条件变量(Condition)
synchronized:通过 Object.wait()/notify() 实现等待/唤醒,只能有一个等待队列。
ReentrantLock:可创建多个 Condition 对象,实现精细化的线程等待/唤醒。
Condition condition = lock.newCondition();
condition.await(); // 类似 wait()
condition.signal(); // 类似 notify()
智能体编程
示例:生产者-消费者模型中,可为空队列和满队列分别设置 Condition
智能体编程
6. 性能差异
JDK 1.5 时 ReentrantLock 性能显著优于 synchronized。
JDK 1.6 后 JVM 对 synchronized 进行了大量优化(锁升级、自适应自旋等),两者性能差距缩小。
在高竞争场景下,ReentrantLock 仍可能表现更稳定。
三、适用场景
优先使用 synchronized 的情况
简单的同步场景,代码简洁性更重要。
不需要高级功能(如条件变量、中断、超时)。
资源竞争不激烈时,性能可接受。
优先使用 ReentrantLock 的情况
需要公平锁、可中断锁、超时锁等高级功能。
需要多个条件变量(如阻塞队列的实现)。
需要跨方法加锁/释放锁(如:在方法 A 加锁,在方法 B 释放)。
竞争激烈且性能要求高。

智能体编程

五、总结
synchronized 简单、安全、自动管理锁释放,适合大多数常规同步场景。
ReentrantLock 功能强大、灵活可控,适合复杂并发场景和高级需求。
从 JDK 1.6 开始,两者性能接近,选择时应更关注功能需求和代码可维护性。
在 JDK 后续版本中,synchronized 仍在持续优化(如锁消除、锁粗化等),而 ReentrantLock 提供了更细粒度的并发控制。
面试回答
首先,synchronized 是 Java 语言层面的关键字,是 JVM 原生支持的锁机制。它的使用非常简单,编译器会自动处理锁的获取和释放,所以基本不会因为忘记释放锁而导致死锁,易用性是它的最大优点。
而 ReentrantLock 是 JUC 包下的一个类,是 JDK 层面实现的锁。它需要开发者显式地调用 lock() 和 unlock() 方法,通常在 finally 块中释放锁,否则容易出问题。所以从使用门槛上说,synchronized 更低。

在功能上,ReentrantLock 比 synchronized 灵活和强大得多,主要有三点:

可中断获取锁:当线程尝试获取 ReentrantLock 时,如果长时间拿不到,可以响应中断,通过 lockInterruptibly() 方法放弃等待去做别的事情。而 synchronized 在等待锁时,线程会一直阻塞,无法被中断。
公平锁选项:ReentrantLock 可以在构造函数中指定是否是公平锁(先等待的线程先获得锁)。虽然公平锁性能有损耗,但能防止线程饥饿。synchronized 则是非公平的,谁抢到算谁的,性能通常更好。
条件变量(Condition):这是非常强大的一点。一个 ReentrantLock 可以创建多个 Condition 对象,用来实现更精细的线程等待/通知。比如,我们可以让一部分线程在条件A上等待,另一部分在条件B上等待,唤醒时也可以选择只唤醒等待条件A的线程。而 synchronized 只能配合 wait() 和 notify(),所有线程都在同一个条件队列上,唤醒是随机的(notify)或全部唤醒(notifyAll),不够精确。
在早期版本(JDK 1.5 之前),ReentrantLock 的性能比 synchronized 好很多。但后来 JVM 对 synchronized 进行了大幅优化,比如引入了偏向锁、轻量级锁、自旋锁、锁消除、锁粗化等。所以在高版本的 JDK(如 1.8 及以后)中,两者在性能上已经相差无几,synchronized 甚至在一些常见场景下更优,因为它有 JVM 的持续优化。

所以,我的选择原则通常是:

www.zhihu.com/zvideo/1992407537706895097
www.zhihu.com/zvideo/1992407537706895097/
www.zhihu.com/zvideo/1992407541674680369
www.zhihu.com/zvideo/1992407541674680369/
www.zhihu.com/zvideo/1992407542895233014
www.zhihu.com/zvideo/1992407542895233014/
www.zhihu.com/zvideo/1992407544086421670
www.zhihu.com/zvideo/1992407544086421670/
www.zhihu.com/zvideo/1992407547664172384
www.zhihu.com/zvideo/1992407547664172384/
www.zhihu.com/zvideo/1992407548234580442
www.zhihu.com/zvideo/1992407548234580442/
www.zhihu.com/zvideo/1992407548578518053
www.zhihu.com/zvideo/1992407548578518053/
www.zhihu.com/zvideo/1992407549253801792
www.zhihu.com/zvideo/1992407549253801792/
www.zhihu.com/zvideo/1992407549622891577
www.zhihu.com/zvideo/1992407549622891577/
www.zhihu.com/zvideo/1992407553368420747
www.zhihu.com/zvideo/1992407553368420747/
www.zhihu.com/zvideo/1992407554614129981
www.zhihu.com/zvideo/1992407554614129981/
www.zhihu.com/zvideo/1992407558477063882
www.zhihu.com/zvideo/1992407558477063882/
www.zhihu.com/zvideo/1992407560754570384
www.zhihu.com/zvideo/1992407560754570384/
www.zhihu.com/zvideo/1992407561064961312
www.zhihu.com/zvideo/1992407561064961312/
www.zhihu.com/zvideo/1992407564164559330
www.zhihu.com/zvideo/1992407564164559330/
www.zhihu.com/zvideo/1992407566362374403
www.zhihu.com/zvideo/1992407566362374403/
www.zhihu.com/zvideo/1992407567146709775
www.zhihu.com/zvideo/1992407567146709775/
www.zhihu.com/zvideo/1992407569835258589
www.zhihu.com/zvideo/1992407569835258589/
www.zhihu.com/zvideo/1992407570036590286
www.zhihu.com/zvideo/1992407570036590286/
www.zhihu.com/zvideo/1992407572041466160
www.zhihu.com/zvideo/1992407572041466160/
www.zhihu.com/zvideo/1992407574851633871
www.zhihu.com/zvideo/1992407574851633871/
www.zhihu.com/zvideo/1992407576172851901
www.zhihu.com/zvideo/1992407576172851901/
www.zhihu.com/zvideo/1992407577234003621
www.zhihu.com/zvideo/1992407577234003621/
www.zhihu.com/zvideo/1992407578437767460
www.zhihu.com/zvideo/1992407578437767460/
www.zhihu.com/zvideo/1992407581390561464
www.zhihu.com/zvideo/1992407581390561464/
www.zhihu.com/zvideo/1992407582816609854
www.zhihu.com/zvideo/1992407582816609854/
www.zhihu.com/zvideo/1992407585610024034
www.zhihu.com/zvideo/1992407585610024034/
www.zhihu.com/zvideo/1992407589321988082
www.zhihu.com/zvideo/1992407589321988082/
www.zhihu.com/zvideo/1992407589363934260
www.zhihu.com/zvideo/1992407589363934260/
www.zhihu.com/zvideo/1992407587027690069
www.zhihu.com/zvideo/1992407587027690069/
www.zhihu.com/zvideo/1992407594795549544
www.zhihu.com/zvideo/1992407594795549544/
www.zhihu.com/zvideo/1992407596708173208
www.zhihu.com/zvideo/1992407596708173208/
www.zhihu.com/zvideo/1992407598352335598
www.zhihu.com/zvideo/1992407598352335598/
www.zhihu.com/zvideo/1992407602487899844
www.zhihu.com/zvideo/1992407602487899844/
www.zhihu.com/zvideo/1992407601619681912
www.zhihu.com/zvideo/1992407601619681912/
www.zhihu.com/zvideo/1992407603590997318
www.zhihu.com/zvideo/1992407603590997318/
www.zhihu.com/zvideo/1992407603955925170
www.zhihu.com/zvideo/1992407603955925170/
www.zhihu.com/zvideo/1992407607361676106
www.zhihu.com/zvideo/1992407607361676106/
www.zhihu.com/zvideo/1992407608867444478
www.zhihu.com/zvideo/1992407608867444478/
www.zhihu.com/zvideo/1992407610952020709
www.zhihu.com/zvideo/1992407610952020709/
www.zhihu.com/zvideo/1992407612633917349
www.zhihu.com/zvideo/1992407612633917349/
www.zhihu.com/zvideo/1992407615507019686
www.zhihu.com/zvideo/1992407615507019686/
www.zhihu.com/zvideo/1992407617528672533
www.zhihu.com/zvideo/1992407617528672533/
www.zhihu.com/zvideo/1992407619768455320
www.zhihu.com/zvideo/1992407619768455320/
www.zhihu.com/zvideo/1992407620791861564
www.zhihu.com/zvideo/1992407620791861564/
www.zhihu.com/zvideo/1992407625099411547
www.zhihu.com/zvideo/1992407625099411547/
www.zhihu.com/zvideo/1992407625934078254
www.zhihu.com/zvideo/1992407625934078254/
www.zhihu.com/zvideo/1992407627238486514
www.zhihu.com/zvideo/1992407627238486514/
www.zhihu.com/zvideo/1992407628337410124
www.zhihu.com/zvideo/1992407628337410124/
www.zhihu.com/zvideo/1992407631093052426
www.zhihu.com/zvideo/1992407631093052426/
www.zhihu.com/zvideo/1992407631848048619
www.zhihu.com/zvideo/1992407631848048619/
www.zhihu.com/zvideo/1992407635069252395
www.zhihu.com/zvideo/1992407635069252395/
www.zhihu.com/zvideo/1992407636088480450
www.zhihu.com/zvideo/1992407636088480450/
www.zhihu.com/zvideo/1992407638504392701
www.zhihu.com/zvideo/1992407638504392701/
www.zhihu.com/zvideo/1992407639511016093
www.zhihu.com/zvideo/1992407639511016093/
www.zhihu.com/zvideo/1992407642518360585
www.zhihu.com/zvideo/1992407642518360585/
www.zhihu.com/zvideo/1992407643025842845
www.zhihu.com/zvideo/1992407643025842845/
www.zhihu.com/zvideo/1992407645294970745
www.zhihu.com/zvideo/1992407645294970745/
www.zhihu.com/zvideo/1992407649703175963
www.zhihu.com/zvideo/1992407649703175963/
www.zhihu.com/zvideo/1992407654316921808
www.zhihu.com/zvideo/1992407654316921808/
www.zhihu.com/zvideo/1992407654220461297
www.zhihu.com/zvideo/1992407654220461297/
www.zhihu.com/zvideo/1992407654614721411
www.zhihu.com/zvideo/1992407654614721411/
www.zhihu.com/zvideo/1992407658112778491
www.zhihu.com/zvideo/1992407658112778491/
www.zhihu.com/zvideo/1992407660188942435
www.zhihu.com/zvideo/1992407660188942435/
www.zhihu.com/zvideo/1992407662198006921
www.zhihu.com/zvideo/1992407662198006921/
www.zhihu.com/zvideo/1992407662504215026
www.zhihu.com/zvideo/1992407662504215026/
www.zhihu.com/zvideo/1992407663909286565
www.zhihu.com/zvideo/1992407663909286565/
www.zhihu.com/zvideo/1992407667877115812
www.zhihu.com/zvideo/1992407667877115812/
www.zhihu.com/zvideo/1992407668145541591
www.zhihu.com/zvideo/1992407668145541591/
www.zhihu.com/zvideo/1992407671891051991
www.zhihu.com/zvideo/1992407671891051991/
www.zhihu.com/zvideo/1992407672629248124
www.zhihu.com/zvideo/1992407672629248124/
www.zhihu.com/zvideo/1992407673694605462
www.zhihu.com/zvideo/1992407673694605462/
www.zhihu.com/zvideo/1992407675720467715
www.zhihu.com/zvideo/1992407675720467715/
www.zhihu.com/zvideo/1992407677884725165
www.zhihu.com/zvideo/1992407677884725165/
www.zhihu.com/zvideo/1992407679797326276
www.zhihu.com/zvideo/1992407679797326276/
www.zhihu.com/zvideo/1992407680162223295
www.zhihu.com/zvideo/1992407680162223295/
www.zhihu.com/zvideo/1992407684780144596
www.zhihu.com/zvideo/1992407684780144596/
www.zhihu.com/zvideo/1992407686306875277
www.zhihu.com/zvideo/1992407686306875277/
www.zhihu.com/zvideo/1992407687330304370
www.zhihu.com/zvideo/1992407687330304370/
www.zhihu.com/zvideo/1992407691725911132
www.zhihu.com/zvideo/1992407691725911132/
www.zhihu.com/zvideo/1992407691755271230
www.zhihu.com/zvideo/1992407691755271230/
www.zhihu.com/zvideo/1992407694041178963
www.zhihu.com/zvideo/1992407694041178963/
www.zhihu.com/zvideo/1992407697568576889
www.zhihu.com/zvideo/1992407697568576889/
www.zhihu.com/zvideo/1992407697690219055
www.zhihu.com/zvideo/1992407697690219055/
www.zhihu.com/zvideo/1992407699888026838
www.zhihu.com/zvideo/1992407699888026838/
www.zhihu.com/zvideo/1992407701595124839
www.zhihu.com/zvideo/1992407701595124839/
www.zhihu.com/zvideo/1992407703809697530
www.zhihu.com/zvideo/1992407703809697530/
www.zhihu.com/zvideo/1992407706565367016
www.zhihu.com/zvideo/1992407706565367016/
www.zhihu.com/zvideo/1992407707290969194
www.zhihu.com/zvideo/1992407707290969194/
www.zhihu.com/zvideo/1992407711309140450
www.zhihu.com/zvideo/1992407711309140450/
www.zhihu.com/zvideo/1992407712613569145
www.zhihu.com/zvideo/1992407712613569145/
www.zhihu.com/zvideo/1992407715306288066
www.zhihu.com/zvideo/1992407715306288066/
www.zhihu.com/zvideo/1992407715583128818
www.zhihu.com/zvideo/1992407715583128818/
www.zhihu.com/zvideo/1992407716757536981
www.zhihu.com/zvideo/1992407716757536981/
www.zhihu.com/zvideo/1992407719819359920
www.zhihu.com/zvideo/1992407719819359920/
www.zhihu.com/zvideo/1992407721371255497
www.zhihu.com/zvideo/1992407721371255497/
www.zhihu.com/zvideo/1992407722545681410
www.zhihu.com/zvideo/1992407722545681410/
www.zhihu.com/zvideo/1992407723518731727
www.zhihu.com/zvideo/1992407723518731727/
www.zhihu.com/zvideo/1992407726379262841
www.zhihu.com/zvideo/1992407726379262841/
www.zhihu.com/zvideo/1992407733585072374
www.zhihu.com/zvideo/1992407733585072374/

优先考虑 synchronized:在满足需求的情况下,因为它简单、安全(自动释放),且性能不差。大部分标准的同步场景用它就够了。
需要高级功能时再用 ReentrantLock:比如我需要用到可中断、公平锁,或者需要复杂的条件等待机制(典型应用就是“生产者-消费者”模型),这时 ReentrantLock 是唯一的选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1125896.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java Web 教师工作量管理系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

摘要 随着教育信息化的快速发展,高校教师工作量管理逐渐成为提升教学效率和管理水平的重要环节。传统的人工记录和统计方式效率低下,容易出错,且难以实现数据的实时更新和共享。教师工作量管理系统通过数字化手段,能够有效整合教学…

串口通信学习

串口道信抗干扰能力低——>RS232(提升了电平大小增加抗干扰能力)——>RS485(差分线形式增加抗干扰能力)

springboot集成Jasypt实现配置文件启动时自动解密-ENC

SpringBoot本身并没有自动加解密的功能&#xff0c;平时项目启动时&#xff0c;自动解密配置文件里ENC( )包含的数据&#xff0c;原因是使用了Jasypt&#xff08;Java Simplified Encryption&#xff09;。一、前置条件&#xff0c;maven引入依赖<!-- Spring Boot集成Jasypt…

webstrom提交git时总是会自动格式化,导致页面报错Expected no line breaks before closing bracket, but 1 line break found

开发的时候明明都是好的&#xff0c;最后提交的时候因为编辑器的自动格式化&#xff0c;导致页面一堆报错、Expected no line breaks before closing bracket, but 1 line break found 。气死了发现都是某一行的代码写的特别的长&#xff0c;他在提交时自动格式化&#xff0c;换…

SpringBoot+Vue 小徐影城管理系统管理平台源码【适合毕设/课设/学习】Java+MySQL

摘要 随着数字化时代的快速发展&#xff0c;影院管理系统的智能化需求日益增长。传统影院管理方式依赖人工操作&#xff0c;效率低下且易出错&#xff0c;难以满足现代影院的高效运营需求。小徐影城管理系统管理平台旨在通过信息化手段解决这一问题&#xff0c;实现影院的自动化…

滤波前后对比图

% 读取数据 pwr freadbkj(../rmli/rmli.ave, 5902, float32, b);% 原始干涉图数据 phase_complex freadbkj(20091226_20100515.diff, 5902, cpxfloat32, b); cc freadbkj(20091226_20100515.cc, 5902, float32, b);% ADF处理后的干涉图数据 adf_phase_complex freadbkj(200…

力扣数据库——第N高的薪水

第N高的薪水https://leetcode.cn/problems/nth-highest-salary/ 一 题目 表: Employee Column NameTypeidintsalaryint id 是该表的主键&#xff08;列中的值互不相同&#xff09;。该表的每一行都包含有关员工工资的信息。编写一个解决方案查询 Employee 表中第 n 高的不…

SpringBoot+Vue 企业客户管理系统平台完整项目源码+SQL脚本+接口文档【Java Web毕设】

摘要 随着信息技术的快速发展&#xff0c;企业客户管理系统的需求日益增长&#xff0c;传统的人工管理模式已无法满足企业对客户数据的高效管理和分析需求。企业客户管理系统通过信息化手段整合客户资源&#xff0c;优化业务流程&#xff0c;提升客户满意度和企业竞争力。该系统…

人大金仓数据库

v8版本说明 人大金仓数据库V8&#xff08;KingbaseES V8&#xff09;是基于PostgreSQL 9.6版本开发的。‌ 1该版本在设计上继承了PostgreSQL 9.6的特性&#xff0c;同时增加了对Oracle的兼容性支持。 pg9.5以上版本 pg9.5以上版本-PgSQL实现更新或插入&#xff08;单条数据&…

SpringBoot+Vue 网上超市设计与实现管理平台源码【适合毕设/课设/学习】Java+MySQL

摘要 随着互联网技术的快速发展和电子商务的普及&#xff0c;网上超市已成为人们日常生活中不可或缺的一部分。传统的线下超市受限于时间和空间&#xff0c;难以满足消费者多样化的需求&#xff0c;而网上超市凭借其便捷性、高效性和丰富的商品选择&#xff0c;逐渐成为购物主流…

达梦数据库

版本说明 深度mysql

【2025最新】基于SpringBoot+Vue的在线文档管理系统管理系统源码+MyBatis+MySQL

摘要 随着信息技术的飞速发展&#xff0c;企业对文档管理的需求日益增长&#xff0c;传统的文档管理方式已无法满足高效、安全、协同的需求。在线文档管理系统作为一种现代化的解决方案&#xff0c;能够有效解决文档存储、共享、版本控制等问题&#xff0c;提升团队协作效率。该…

SpringBoot+Vue 网上点餐系统管理平台源码【适合毕设/课设/学习】Java+MySQL

摘要 随着互联网技术的快速发展和移动设备的普及&#xff0c;线上点餐系统逐渐成为餐饮行业数字化转型的重要组成部分。传统的餐饮服务模式存在效率低下、人力成本高、顾客体验差等问题&#xff0c;而网上点餐系统能够有效解决这些问题&#xff0c;提升餐厅运营效率并优化顾客体…

128 自定义滑块

1.自定义滑块 做法&#xff1a;1.先定义好动画&#xff0c;暂停2.使用动画的delay时间&#xff0c;来确定各个时间点位置3.通过input:range来改变delay的css变量值&#xff0c;使用dom.style.setProperty(--delayTime,25s)来设置 <template><!--智能环绕参数面板--&g…

[特殊字符]️_开发效率与运行性能的平衡艺术[20260107170447]

作为一名经历过无数项目开发的工程师&#xff0c;我深知开发效率与运行性能之间的平衡是多么重要。在快节奏的互联网行业&#xff0c;我们既需要快速交付功能&#xff0c;又需要保证系统性能。今天我要分享的是如何在开发效率和运行性能之间找到最佳平衡点的实战经验。 &#…

Agentic AI提示优化案例:提示工程架构师如何用“目标细化”让agents更聚焦?

Agentic AI提示优化实战&#xff1a;用“目标细化”让AI Agents从“摸鱼”到“专注”的秘密 关键词 Agentic AI、提示工程、目标细化、任务分解、LLM Agents、Prompt Optimization、聚焦性 摘要 你有没有遇到过这样的AI Agent&#xff1f;让它“写一篇技术博客”&#xff0…

[特殊字符]️_开发效率与运行性能的平衡艺术[20260107171443]

作为一名经历过无数项目开发的工程师&#xff0c;我深知开发效率与运行性能之间的平衡是多么重要。在快节奏的互联网行业&#xff0c;我们既需要快速交付功能&#xff0c;又需要保证系统性能。今天我要分享的是如何在开发效率和运行性能之间找到最佳平衡点的实战经验。 &#…

3.6-Web后端基础(java操作数据库)

目录 前言 JDBC 介绍 查询数据 需求 准备工作 代码实现 代码剖析 ResultSet 预编译SQL SQL注入 SQL注入解决 性能更高 增删改数据 需求 代码实现 Mybatis 介绍 快速入门 辅助配置 配置SQL提示 配置Mybatis日志输出 JDBC VS Mybatis 数据库连接池 介绍…

[特殊字符]_内存管理深度解析:如何避免GC导致的性能陷阱[20260107172234]

作为一名经历过无数性能调优案例的工程师&#xff0c;我深知内存管理对Web应用性能的影响有多大。在最近的一个项目中&#xff0c;我们遇到了一个棘手的性能问题&#xff1a;系统在高并发下会出现周期性的延迟飙升&#xff0c;经过深入分析&#xff0c;发现问题根源竟然是垃圾回…

我为什么狠狠爱上这些“新 CSS 函数”:它终于开始像个聪明人了

我有一支技术全面、经验丰富的小型团队&#xff0c;专注高效交付中等规模外包项目&#xff0c;有需要外包项目的可以联系我这些年&#xff0c;我眼看着 CSS 一点点变。 有的变化小到像“换了个标点”&#xff0c;你用不用都无所谓&#xff1b;也有的变化大到能改写你整套写法。…