新闻详情

新闻详情

首页 / 资讯中心 / 详情

volatile和原子包装类、synchronized、Lock(ReentrantLock、ReentrantReadWriteLock、StampedLock)、死锁及解决方式、CAS自旋

发布时间:2026/10/1 9:29:08来源:尧图网络
volatile和原子包装类、synchronized、Lock(ReentrantLock、ReentrantReadWriteLock、StampedLock)、死锁及解决方式、CAS自旋
目录一、volatile二、synchronized1.Synchronized是如何从重量级锁升级为经量级锁的?1.1.什么是锁膨胀/锁升级?1.无锁2.偏向锁3.轻量级锁(乐观锁)(自旋锁)4.重量级锁(悲观锁)1.2.锁消除1.3.锁粗化1.4自适应自旋锁(乐观锁、轻量级锁)2.Synchronized关键字有几种锁定方式/几种用法,及其作用范围?Synchronized使用形式3.Synchronized修饰的方法抛出异常时,会自动释放锁吗?4.什么是公平锁和非公平锁?公平锁非公平锁补充:Java中的公平锁和非公平锁1.ReentrantLock(可重入锁)1)基本使用2)可重入3)可中断3.1)补充:Thread.interrupt()3.2)补充:多线程--ParkUnpark3.3)复习:wait 、notify、notifyAll,sleep、yield、join📌 ‌通用五状态模型(操作系统层面)‌🔍 ‌Java六状态模型(Thread.State枚举)‌🔄 ‌状态转换关系‌📝 ‌关键区别‌3.4)正题-可中断:lockInterruptibly()4)tryLock()--获取锁超时--可中断tryLock()5)条件变量的使用2.ReentrantReadWriteLock(可重入读写锁)3.StampedLock(该锁不允许重入)4.synchronized(非公平锁)5.synchronized是公平锁还是非公平锁?6.synchronized底层源码如何实现6.1特性原子性可见性有序性1.happens-before2.as if serial可重入性7.三、死锁-及其解决方式1.什么是死锁2.本质原因3.产生死锁的4个必要条件1、互斥条件2、不可剥夺条件(不能被动释放)3、请求与保持/占有并等待条件(不主动释放)4、循环等待条件4、处理死锁的方法1.预防死锁(资源预先静态分配法、资源顺序分配法)破坏“互斥”条件:破坏“请求与保持/占有并等待”条件:破坏“不可抢占”条件:破坏“循环等待”条件(资源顺序分配法):2.避免死锁(银行家算法)3.检测死锁(资源分配图简化法)4.解除死锁(资源剥夺法、撤销进程法、进程回退法)资源剥夺法:撤销进程法:进程回退法:四、CAS自旋我们先看一段代码:所以面对这种情况,我们就可以使用java中的“原子操作类”:而Atomic操作类的底层正是用到了“CAS机制”:CAS的缺点:1) CPU开销过大2) 不能保证代码块的原子性3) ABA问题什么是ABA问题:如何解决ABA问题:Java语言的CAS底层如何实现:一、volatile当一个变量定义为 volatile 之后,将具备两种特性:1.保证此变量对所有的线程的可见性。变量的值在线程间传递均需要通过主内存来完成。当一个线程修改了这个变量的值,volatile 保证了新值能立即同步到主内存,以及每次使用前立即从主内存刷新。但普通变量做不到这点。2.禁止指令重排序即有序性。有volatile修饰的变量,赋值后多执行了一个“load addl $0x0, (%esp)”操作,这个操作相当于一个内存屏障(指令重排序时不能把后面的指令重排序到内存屏障之前的位置),只有一个CPU访问内存时,并不需要内存屏障;(什么是指令重排序:是指CPU允许将多条指令不按程序规定的顺序分开发送给各相应电路单元处理)。3.volatile 性能: volatile 的读性能消耗与普通变量几乎相同,但是写操作稍慢,因为它需要在本地代码中插入许多内存屏障指令来保证处理器不发生乱序执行。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

(LangGraph教程)2. State and Memory——Lesson 6:Chatbot聊天机器人消息总结与外部记忆(外部数据库)(未索引) 2026/10/1 10:16:45

(LangGraph教程)2. State and Memory——Lesson 6:Chatbot聊天机器人消息总结与外部记忆(外部数据库)(未索引)

https://academy.langchain.com/courses/intro-to-langgraph https://github.com/shangxiang0907/langchain-academy 文章目录Chatbot with message summarization & external DB memory 具备消息摘要与外部数据库记忆的聊天机器人Review 回顾Goals 目标SqlitePersisting …

阅读更多 →
2026 年版|同岗薪资差 1.5 倍!大数据人转大模型不用读研,4 个月可落地 2026/10/1 10:16:38

2026 年版|同岗薪资差 1.5 倍!大数据人转大模型不用读研,4 个月可落地

本文对比了大数据与大模型岗位的薪资差距,指出大模型岗位薪资普遍更高。文章强调大数据工程师转型大模型具有三大优势:数据处理能力、分布式计算经验及行业知识。为有意转型的读者提供了四步转型路径:补齐深度学习基础、掌握大模型微调技术、…

阅读更多 →
Python手写BP与CNN作业骨架:可调试、可验证、可批改 2026/10/1 10:16:38

Python手写BP与CNN作业骨架:可调试、可验证、可批改

简介:这是一套面向高校与自学AI初学者的Python作业辅助工具源码,聚焦深度学习、智能优化算法与搜索算法等核心AI方向,帮助学生高效完成课程实验、课程设计及项目实践。资源共56个文件,含10个Python源码(如BP、CNN、PSO…

阅读更多 →
SSM+微信小程序私教预约系统实战指南 2026/10/1 10:16:31

SSM+微信小程序私教预约系统实战指南

简介:本资源是一套面向计算机专业本科生的高分毕业设计实战项目,基于SSM框架与微信小程序构建健身房私教预约系统,解决中小型健身场馆线上预约、教练排班、会员管理等核心业务需求,亦适合作为Java Web开发与小程序全栈课程设计参考…

阅读更多 →
PUBG‑Ally:具备对话能力的具身游戏AI队友智能体 2026/10/1 10:16:31

PUBG‑Ally:具备对话能力的具身游戏AI队友智能体

PUBG‑Ally:具备对话能力的具身游戏AI队友智能体 arXiv编号:arXiv:2609.29837v1 摘要 本文介绍PUBG‑Ally(简称Ally),部署在《绝地求生》中的语音交互具身智能体,它可以自主推理、执行游戏动作,作为AI队友和真人玩家并肩作战。开发该AI队友需要同时攻克两大难点:严格延…

阅读更多 →
小白程序员必看:企业如何正确使用AI,让AI成为你的得力助手 2026/10/1 10:16:24

小白程序员必看:企业如何正确使用AI,让AI成为你的得力助手

本文探讨了企业在应用AI时常见的误区,强调AI不应仅仅被视为工具,而应被当作员工来使用。文章指出,AI落地需要明确的岗位、目标、知识、权限和流程,并强调管理者需要学会如何带领AI,建立一套AI用工体系,从而…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉