线程安全、synchronized 与死锁完整学习笔记
最近在学习 Java 多线程基础梳理了线程安全产生根源、synchronized 锁用法以及极易踩坑的死锁问题把整套知识点整理成通俗易懂的笔记方便后续复习也分享给正在学多线程的同学一、什么是线程安全多线程程序中多个线程同时访问共享资源如果程序最终运行结果和单线程顺序执行的结果完全一致就代表这段代码是线程安全的反之结果错乱、数据出错就是线程不安全。举个最简单例子多个线程同时累加同一个计数器最终数值和预期不符就是典型的线程安全问题。二、线程安全问题产生的三大核心原因CPU 线程调度具有随机性操作系统随机分配 CPU 时间片线程执行到一半可能被强行切走暂停不会完整走完一整套操作。多线程并发读写同一个共享变量多个线程同时修改同一份公共资源是冲突发生的前提。变量修改操作不具备原子性一行代码底层会拆分成多步 CPU 指令中途可以被打断。 经典示例count并非一步操作底层分为三步把变量值读取到寄存器寄存器完成自增计算将计算结果写回内存保存 线程如果在三步中间被切换就会出现数据覆盖、数值丢失。三、解决线程安全synchronized 同步锁1. 锁的核心作用加锁后同一时刻仅有一个线程能持有锁、执行锁内代码其余线程只能阻塞等待。 语法代码执行到右大括号时会自动释放锁。原理通过锁竞争把并发冲突代码改为串行执行以此保证数据安全但串行会牺牲程序运行效率。2. synchronized 两种使用形式与优缺点修饰整个方法 直接在方法声明前添加synchronized锁范围是整个方法。 缺点粒度太大哪怕方法里大部分代码不需要同步也全部串行执行严重降低并发性能。同步代码块推荐只包裹真正操作共享变量的少量代码其余逻辑正常并发运行兼顾安全与性能。3. 补充关键特性可重入锁synchronized是可重入锁同一个线程拿到一把锁后可以多次重复获取这把锁不会自己阻塞自己。 这个特性能规避单锁嵌套场景下的死锁问题。4. synchronized 自带两大特性也是死锁必要条件互斥性锁同一时间只能被一个线程持有其他线程申请同一锁直接进入阻塞等待。不可抢占锁一旦被线程占用其他线程无法强制抢夺只能等待持有者主动释放。5. 为什么大部分类不自带同步锁加锁会强制部分代码串行直接削弱程序并发高性能优势。 因此 Java 默认集合、工具类都无内置锁由开发者根据业务场景手动选择是否加锁。同时仅靠单锁也有局限如果一段业务需要多把锁共同保证原子操作只加单个同步锁依旧会出现线程安全问题。四、死锁多锁场景下的严重问题1. 死锁定义多个线程互相持有对方需要的锁资源同时又发起请求获取对方手中的锁所有线程无限阻塞、僵持等待程序卡死无法自动恢复。2. 死锁带来的危害问题复现随机性强依赖 CPU 调度顺序测试时很难稳定复现排查难度极高线程永久阻塞持续占用 CPU、内存、连接等系统资源无法主动释放业务流程停滞严重时导致整个服务卡顿、瘫痪。3. 触发死锁的四个必要条件互斥条件synchronized 锁天然满足同一锁只能单线程持有不可抢占条件synchronized 锁天然满足无法强行抢夺他人锁持有并请求条件线程已经持有锁 A不释放又去申请锁 B锁嵌套使用 可重入锁仅解决同一把锁多次获取无法解决多把不同锁嵌套循环等待条件线程之间形成环形等待链线程 1 等线程 2 的锁线程 2 等线程 1 的锁。4. 死锁通用解决办法破坏循环等待条件即可给所有锁统一分配编号规定所有线程必须按锁编号从小到大的顺序申请锁杜绝环形等待。

相关新闻

2026低代码TOP8实测:信通院先进级认证厂商,谁在裸泳?

2026低代码TOP8实测:信通院先进级认证厂商,谁在裸泳?

一、别再被野榜骗了:低代码选型的真相与迷雾 2026 年的低代码赛道,正处在一个极其分裂的节点。 一边是 IDC 最新出炉的市场数据:国内低代码市场规模突破 131 亿元,同比增速高达 42.3%,在企业级软件赛道中持续领跑&…

2026/7/24 9:40:05 阅读更多 →
声发射在线监测系统如何实现设备状态实时感知?从数据采集到智能预警全过程解析

声发射在线监测系统如何实现设备状态实时感知?从数据采集到智能预警全过程解析

一、工业设备为什么需要在线状态监测?随着工业设备向大型化、连续化和智能化方向发展,传统定期检测方式逐渐难以满足安全管理需求。传统检测通常采用:定期停机检查 → 发现缺陷 → 维修处理这种方式存在一定局限:无法持续了解设备…

2026/7/22 12:27:17 阅读更多 →
金融看板的实时动画:K 线、仪表盘与数据流的视觉呈现技术

金融看板的实时动画:K 线、仪表盘与数据流的视觉呈现技术

金融看板的实时动画:K 线、仪表盘与数据流的视觉呈现技术 一、引言:当数字在动,屏幕背后是千万资金在流动 我第一次做金融看板的动画时,犯了一个大忌——给 K 线图的涨跌加了一个 500ms 的 ease-in-out 渐变动画。产品经理看了之后…

2026/7/22 12:26:17 阅读更多 →

最新新闻

工业AI监控系统:架构设计与工程实践

工业AI监控系统:架构设计与工程实践

1. 制造过程AI监控器的核心价值解析在工业4.0的浪潮中,制造过程的数字化和智能化转型已成为不可逆转的趋势。作为AI应用架构师,我们正站在技术变革的前沿,而制造过程AI监控器就是我们手中的利器。这种系统不仅仅是简单的数据看板,…

2026/7/24 9:42:13 阅读更多 →
基于YOLOv5与DeepSeek的智能垃圾分类系统实践

基于YOLOv5与DeepSeek的智能垃圾分类系统实践

1. 项目概述这个垃圾分类检测系统结合了当前计算机视觉领域最前沿的YOLO目标检测算法和大语言模型DeepSeek的技术优势,打造了一套能够自动识别、分类各类生活垃圾的智能系统。我在实际部署中发现,这套系统特别适合应用在智慧城市建设中的垃圾分拣环节&am…

2026/7/24 9:42:13 阅读更多 →
AI对话微调实战:30分钟提升客服自然度

AI对话微调实战:30分钟提升客服自然度

1. 项目概述:让AI对话更自然的微调方案在2023年的大模型爆发潮中,最令人头疼的问题莫过于:为什么花了高价部署的AI客服,回答总是像教科书般生硬?为什么精心训练的对话模型,总把用户咨询变成技术研讨会&…

2026/7/24 9:42:13 阅读更多 →
HiFICL框架:多模态学习中的跨模态精准对齐技术

HiFICL框架:多模态学习中的跨模态精准对齐技术

1. 项目背景与核心价值在人工智能领域,多模态学习正成为突破单模态能力瓶颈的关键方向。传统上下文学习(In-Context Learning)方法在处理跨模态数据时,往往面临语义对齐失真、特征交互低效等典型问题。HiFICL项目的创新之处在于&a…

2026/7/24 9:42:13 阅读更多 →
大模型API服务优化:性能、成本与稳定性挑战

大模型API服务优化:性能、成本与稳定性挑战

1. 大模型API服务的现状与挑战 当前大模型技术已经从早期的概念验证阶段进入规模化应用阶段。根据我们团队过去一年对接超过200家企业客户的经验,模型API服务领域正面临三个核心痛点: 性能瓶颈 :传统轮询式API调用在高并发场景下平均延迟达…

2026/7/24 9:42:13 阅读更多 →
NLP参数高效微调技术:Adapter、LoRA与Prefix Tuning实战

NLP参数高效微调技术:Adapter、LoRA与Prefix Tuning实战

1. 项目背景与核心价值在自然语言处理领域,预训练语言模型(如BERT、GPT等)已经成为标配工具。但这类模型通常参数量巨大,直接全参数微调不仅计算成本高昂,还容易在小数据集上过拟合。参数高效微调(Paramete…

2026/7/24 9:41:13 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻