news 2026/6/24 21:38:19

Java常见技术分享-14-多线程安全-锁机制-常见的锁以及底层实现-synchronized

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java常见技术分享-14-多线程安全-锁机制-常见的锁以及底层实现-synchronized

synchronized

核心特性
  • 可重入(同一线程可以多次获取同一个对象的锁, 不会因为自己已经持有的锁陷入阻塞)
  • 互斥 (同一时间内只有一个线程持有锁, 线程安全的核心)
  • 悲观 (假设线程的冲突概率高, 直接加锁, 悲观策略,让synchronized 在竞争激烈的情况下很稳定)
针对悲观策略 JDK1.6 之后的重大升级

在JDK1.6 之前 synchronized就是 纯悲观策略, 不管竞争是否激烈, 只要进入代码块, 直接加上重量级锁(阻塞与唤醒)。
JDK1.6之后, 就变成了根据竞争的激烈程度进行升级。
一开始是偏向锁, 只有一个线程的时候, 系统会在对象头记录 这个线程ID, 下次再进入同步代码块, 就不用申请锁了, 直接就能执行。
当有第二个线程 想要竞争锁的时候, 偏向锁 就会升级成轻量级锁, 即虚拟机 发现第二个线程要锁, 且对象头里记录的ID不是第二个线程的。
这时每个线程都会复制一份对象头 里的锁信息, 然后 双方都尝试用CAS操作 去 修改 对象头 里的 锁标记 成 自己的线程ID, 当修改成功 就拿到锁了。
具体的流程是, 在竞争之前 , 会先复制一份 锁标记的信息 , 然后在自己的存储区域 计算出 自己的锁记录地址 ,比如 0x456,更新 锁标记信息, 然后 对 对象头 里的锁标记 信息 执行CAS操作, 把自己的 新的 锁标记信息 更新到对象头上, 执行成功 就拿到锁了。
如果没成功, 就会自旋式的请求锁.(补充一个场景, 如果线程B拿到了锁, 锁标记中的锁记录地址是 0x456, 如果线程C进来 复制了 锁信息 ,是0x456, CAS操作, C虽然 确实 锁记录地址 与预期一致, 但是会因为线程B还在持有锁 而被阻止, 所以会失败, 知道线程B释放锁, 把 锁标记 重新改为默认的mark word副本)。
当同时 自旋的线程 或者 线程的自旋的次数 过多。 就会升级为重量级锁。
对象头里边 会存储一个 指向monitor对象的指针, 这个monitor对象就像一个锁管家 ,当线程竞争失败, 就会被monitor对象标记为阻塞状态,放入等待队列。 不会占用CPU资源。 需要注意的是 锁记录地址 转移到了monitor对象里边。

卧槽今天北京太冷了, 顶不住。 后面其实还有几个锁的,后面的篇章再说吧

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/13 22:21:34

为什么顶尖AI团队都在抢用 Open-AutoGLM 2.0?:独家技术内幕曝光

第一章:为什么顶尖AI团队都在抢用 Open-AutoGLM 2.0?在大模型自动化调优领域,Open-AutoGLM 2.0 正迅速成为行业标杆。其核心优势在于深度融合了 GLM 架构的推理能力与自动化机器学习(AutoML)的优化机制,使模…

作者头像 李华
网站建设 2026/6/17 6:56:25

【Open-AutoGLM云电脑效率革命】:7天掌握视频编解码优化核心技术

第一章:Open-AutoGLM云电脑视频效率革命全景解读Open-AutoGLM作为新一代云原生智能推理框架,正深刻重塑云端视频处理的工作范式。其核心在于将大语言模型与图形流水线深度融合,实现从指令理解到视频渲染的端到端自动化,显著提升内…

作者头像 李华
网站建设 2026/6/17 15:46:32

Qwen1.5本地部署终极指南:新手10分钟搭建专属AI助手

Qwen1.5本地部署终极指南:新手10分钟搭建专属AI助手 【免费下载链接】Qwen1.5 项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen1.5 想要在本地快速部署强大的Qwen1.5大语言模型吗?这篇指南将带你从零开始,用最简单的方式完成…

作者头像 李华
网站建设 2026/6/21 8:12:38

7大技术突破:DeepSeek-V3.2-Exp-Base如何重塑企业AI推理成本结构

当前企业AI部署面临的核心矛盾:算力成本指数级增长与推理精度线性提升不成正比。传统大模型在处理复杂任务时需激活全部参数,单次推理成本动辄数百美元,这让众多企业在AI应用落地时望而却步。深度求索最新开源的推理模型DeepSeek-V3.2-Exp-Ba…

作者头像 李华
网站建设 2026/6/16 9:57:44

AI模型训练不断线:智能断点恢复完整指南

AI模型训练不断线:智能断点恢复完整指南 【免费下载链接】ai-toolkit Various AI scripts. Mostly Stable Diffusion stuff. 项目地址: https://gitcode.com/GitHub_Trending/ai/ai-toolkit 还在为AI模型训练意外中断而烦恼吗?AI-Toolkit的强大训…

作者头像 李华
网站建设 2026/6/23 6:32:19

3步实战:彻底解决FSDP模型保存内存爆炸的终极方案

3步实战:彻底解决FSDP模型保存内存爆炸的终极方案 【免费下载链接】verl verl: Volcano Engine Reinforcement Learning for LLMs 项目地址: https://gitcode.com/GitHub_Trending/ve/verl 你遇到过这种情况吗?训练了几个小时的大模型&#xff0c…

作者头像 李华