尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
简单讲解Java中的synchronized
1. 为什么需要 synchronized在多线程环境下多个线程可能同时访问和修改共享资源导致数据不一致的问题。例如两个线程同时对同一个银行账户余额进行“取款”操作可能因为操作的非原子性读-改-写导致最终结果错误。synchronized的作用就是保证同一时刻最多只有一个线程执行被它修饰的代码块或方法从而保证线程安全。2. synchronized 的三种使用方式使用方式锁对象作用范围修饰实例方法当前实例对象this整个方法体修饰静态方法当前类的Class对象整个方法体修饰代码块指定的任意对象代码块内的语句2.1 修饰实例方法 -- 锁对象是整个 thispublic class Counter { private int count 0; public synchronized void increment() { // 锁住 this count; } }2.2 修饰静态方法 -- 锁对象是整个类public class Counter { private static int count 0; public static synchronized void increment() { // 锁住 Counter.class count; } }2.3 修饰代码块最灵活-- 锁对象是lock细粒度锁只锁这一个特定的锁对象//只有显式写上 synchronized(lock)的代码块才会排队。其他方法包括synchronized方法完全不受影响可以并行执行。public class Counter { private int count 0; private final Object lock new Object(); public void increment() { synchronized (lock) { // 锁住 lock 对象 count; } } }3. 锁的是什么核心要点synchronized 不是锁代码而是锁对象。同一时刻同一个锁对象只能被一个线程持有。不同锁对象之间互不干扰。示例说明public class Example { public synchronized void methodA() {} // 锁 this public synchronized void methodB() {} // 锁 this同一个锁 public static synchronized void methodC() {} // 锁 Class }线程1 执行methodA()时线程2 不能执行methodB()因为锁是同一个this如果是不同的“this”则两个方法并不会相互影响。但线程2 可以执行methodC()因为锁是Class不同锁对象。4. 底层实现原理JVM层面监视器锁Monitor每个Java对象都有一个内部锁Monitor。synchronized本质就是获取/释放这个Monitor。字节码指令同步代码块monitorenter进入monitorexit退出可能有多个退出路径。同步方法通过方法表的ACC_SYNCHRONIZED标志隐式实现。锁升级机制JDK 1.6 优化无锁 → 偏向锁 → 轻量级锁 → 重量级锁自旋、自适应自旋、锁粗化、锁消除等优化。5. 与 volatile 的区别特性synchronizedvolatile原子性✅ 保证 要么全做要么全不做❌ 不保证可见性✅ 保证解锁前刷新到主存改了就得让人看见✅ 保证有序性✅ 保证同一时刻单线程执行代码按顺序执行不被重排✅ 保证禁止指令重排序是否阻塞是竞争失败会阻塞获取不到锁时线程是等待还是放弃否简单记volatile解决可见性synchronized解决可见性 原子性。6. 常见误区与注意事项可以通过AI简单了解锁对象不能是 null否则抛NullPointerException。锁对象尽量使用final避免引用被修改导致锁失效。不要用String常量或Integer等包装类作为锁因为常量池可能导致意外共享锁。synchronized 是可重入锁同一个线程可以多次获取同一把锁避免死锁。过度使用会降低性能应尽量缩小同步范围。7. 简单示例线程安全的计数器public class SafeCounter { private int count 0; private final Object lock new Object(); public void increment() { synchronized (lock) { count; } } public int getCount() { synchronized (lock) { return count; } } }8. 最后一句话在真正的互联网高并发业务代码中我们其实很少直接用synchronized处理业务逻辑synchronized 是 Java 内置的互斥锁通过锁住对象来保证代码块或方法在并发环境下的原子性、可见性和有序性是解决线程安全问题最直接、最可靠的手段之一。分布式场景现在的服务大多是分布式部署多台机器synchronized只能锁单台机器的JVM进程跨机器无效。我们通常用Redis分布式锁或ZooKeeper。单机高性能场景如果是单机高并发计数器、累加器我们通常直接用AtomicIntegerCAS无锁或LongAdder性能比synchronized高得多。需要等待/超时/中断的场景我们会用ReentrantLock因为它支持尝试加锁、超时等待、可中断而synchronized不支持这些高级功能。
RELATED

相关推荐

前端经典面试题

前端经典面试题

一、JS var let const 区别for (var i 0; i < 3; i) {setTimeout(() > {console.log(i);}, 1000); } 输出 3 3 3for循环是同步的&#xff0c;它会一口气把3个setTimeout全注册完&#xff0c;此时i已经变成3了。等100ms后主线程空闲了&#xff0c;回调才开始执行&#xf…

📅 2026/10/9 5:50:01
SSDTTime 新手教程:不写一行 ASL,自动搞定黑苹果 ACPI 补丁

SSDTTime 新手教程:不写一行 ASL,自动搞定黑苹果 ACPI 补丁

SSDTTime 新手教程&#xff1a;不写一行 ASL&#xff0c;自动搞定黑苹果 ACPI 补丁 【免费下载链接】SSDTTime SSDT/DSDT hotpatch attempts. 项目地址: https://gitcode.com/gh_mirrors/ss/SSDTTime SSDTTime 是一款免费的命令行小工具&#xff0c;专为黑苹果用户设计&…

📅 2026/10/9 7:16:39
ShawzinBot 快速上手:3 步把 MIDI 文件变成游戏内沙温琴演奏

ShawzinBot 快速上手:3 步把 MIDI 文件变成游戏内沙温琴演奏

ShawzinBot 快速上手&#xff1a;3 步把 MIDI 文件变成游戏内沙温琴演奏 【免费下载链接】ShawzinBot Convert a MIDI input to a series of key presses for the Shawzin 项目地址: https://gitcode.com/gh_mirrors/sh/ShawzinBot ShawzinBot 是一款把 MIDI 文件或 MID…

📅 2026/10/10 14:25:47
MORE NEWS

更多资讯

📰

电压证和电工证过期了怎么复审延期?值不值得考?实操指南来了

电压证和电工证过期了怎么复审延期?值不值得考?实操指南来了 证书过期了不知道怎么复审延期,这事儿在特种作业行业特别常见,尤其是电压证和电工证这类高频使用证书,很多人因为工作调动、证书遗失或忘记复审,导致证书失效。你是不是也在为这事发愁?别急…

📰

东山岛电工证怎么考,真实经历告诉你怎么避坑

东山岛电工证怎么考,真实经历告诉你怎么避坑 不知道去哪报名怕被中介坑,我来告诉你怎么搞定东山岛电工证,省心又省钱。很多人在考电工证的时候,被各种培训机构忽悠,结果花了几千块,最后连报名都没上,或者考了几次都没过,白白浪费时间和钱。我之前就遇…

📰

濮阳清丰电工证在哪办含金量高吗怎么准备实操考试不挂科

濮阳清丰电工证在哪办含金量高吗怎么准备实操考试不挂科 实操考试心里没底怕挂科,这几乎是每个准备考电工证的小伙伴都经历过的事。尤其在濮阳清丰这样的地方,电工证的 含金量…

📰

博罗电工证快速办理官方回应:外省证怎么转?老电工亲自告诉你

博罗电工证快速办理官方回应:外省证怎么转?老电工亲自告诉你 之前考的证在外省能不能转过来?这几乎是所有打算在博罗从事电工工作的小伙伴最关心的问题,尤其是像我这样从商丘转岗过来的,以前在老家考的低压电工证,到了博罗之后才发现,证件的有效性、考…

📰

庐江考电工证什么时间最新政策解读 官方报名入口全攻略

庐江考电工证什么时间最新政策解读 官方报名入口全攻略 不知道去哪报名怕被中介坑?别急,这篇文章给你说清楚庐江考电工证什么时间、怎么报、怎么防坑,官方报名入口也给你安排上。不管是刚入行还是想转行,电工证都是你必须拿下的“入场券”,尤其是特种作…

📰

高压电工证滨海县千万别踩坑,过期了不知道怎么复审延期怎么办

高压电工证滨海县千万别踩坑,过期了不知道怎么复审延期怎么办 证书过期了不知道怎么复审延期,这是很多人在拿到高压电工证后会遇到的问题。尤其是在滨海县,很多电工朋友因为工作变动、疏忽或者信息不对称,导致证书到期后无法及时办理复审,甚至面临被单位…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬