Java后端八股-------并发编程





















图中的 synchronized方法如果没有锁,那么可能会有超卖,数据错误等情况。

加锁之后会按顺序售卖。

synchronized的底层是monitor。



线程没有竞争关系的时候,引入了轻量级锁,当需要处理竞争关系的时候一定要用到重量级锁(线程的对象锁)。


mark word中重量级锁时,ptr_to_heavyweight_monitor是一个指向monitor的指针。

cas交换是用来保证原子操作的.

👆cas会做交换,交换地址值,这样其他线程就无法获取锁,但是自己的线程内可以多次获取锁(没有竞争关系时)。


在Java中,轻量级锁(Lightweight Locking)和偏向锁(Biased Locking)是Java虚拟机(JVM)内部实现的锁优化技术,它们旨在提高多线程环境下锁的性能。这些锁策略是JVM自动管理的,通常不需要开发者手动开启或关闭。

线程里面的工作内存不存在线程安全的问题,共享变量副本是主内存中共享变量的副本,需要通过JMM控制进行save和load






👆在上面这段代码中,线程1修改的stop为true,线程2是能读到的,但是线程3while循环却不停止。


JVM优化导致的重排序。

实验数据

👆这个可以解决问题

👆这个不能组织x在y后执行,不能解决问题。




AQS的实现类当中,公平锁和非公平锁都有实现。













一把锁,获取效率很低

每个hash值都有一把锁。





相关推荐
susu10830189112 分钟前
python代码把GIF 转成视频
开发语言·python
dajun1811234563 分钟前
信息系统运维管理全流程详解 在线画图工具绘制运维流程图表技巧
运维·数据库·信息可视化·流程图·旅游·论文笔记
取码网5 分钟前
2025最新口红机防篡改版本源码
android·java·javascript
流觞 无依6 分钟前
SQLite数据库损坏修复指南——解决“database disk image is malformed”报错
jvm·数据库·sqlite
道清茗6 分钟前
【MySQL知识点问答题】 安全与性能管理
数据库·mysql
2501_9206276113 分钟前
Flutter 框架跨平台鸿蒙开发 - 数据库学习助手
数据库·学习·flutter·华为·harmonyos
东离与糖宝15 分钟前
2026 Java AI框架选型:Spring AI/LangChain4j企业级对比
java·人工智能
郝学胜-神的一滴16 分钟前
[力扣 20] 栈解千愁:有效括号序列的优雅实现与深度解析
java·数据结构·c++·算法·leetcode·职场和发展
林姜泽樾17 分钟前
python入门第六课,其他字符串格式化和input
开发语言·python·pycharm
代码改善世界17 分钟前
【C++初阶】手撕C++ string类
java·开发语言·c++