news 2026/4/15 13:09:12

Java锁相关概念的简单理解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java锁相关概念的简单理解
Java中锁的概念
  • 自旋锁:是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判断锁是否能够被成功获取,直到获取到锁才会退出循环

  • 乐观锁:假定没有冲突,在修改数据时如果发现数据和之前获取的不一致,则读最新数据,修改后重试修改

  • 悲观锁:假定会发生并发冲突,同步所有对数据的相关操作,从读数据就开始上锁

  • 独享锁(写):给资源加上写锁,线程可以修改资源,其他线程不能再加锁 (单写)

  • 共享锁(读):给资源加上读锁后只能读不能改,其他线程也只能加读锁,不能加写锁 (多读)

  • 可重入锁、不可重入锁:线程拿到一把锁之后,可以自由进入同一把锁所同步的其他代码,则为可重入锁。

  • 公平锁、非公平锁:争抢锁的顺序,如果是按先来后到,则为公平。

几种重要的锁实现方式: synchronized、ReentrantLock、ReentrantReadWriteLock


同步关键字 synchronized

1、用于实例方法、静态方法时,隐式指定锁对象
2、用于代码块时,显示指定锁对象
3、锁的作用域:对象锁、类锁、分布式锁
4、引申:如果是多个进程,怎么办?

  • 特性:可重入、独享、悲观锁
  • 锁优化:
    • 锁消除:(开启锁消除的参数:-XX:+DoEscapeAnalysis -XX:+EliminateLocks)
    • 锁粗化:JDK做了锁粗化的优化,但我们自己可从代码层面优化

Note: synchronized关键字,不仅实现同步,JMM中规定,synchronized要保证可见性(不能够被缓存)。


思考

锁的思考

》》》锁是加在对象头上边的


堆内存中的Java对象

堆内存中的Java对象

Mark Word

Mark Word

默认情况下JVM锁会经历:未锁定->偏向锁->轻量级锁->重量级锁这四个状态
参考来源:

  • https://www.cs.princeton.edu/picasso/mats/HotspotOverview.pdf
  • https://wiki.openjdk.java.net/display/HotSpot/Synchronization
  • 《深入理解Java虚拟机》
轻量级锁

轻量级锁

重量级锁

重量级锁

偏向锁

偏向锁

锁的升级过程

锁的升级过程

tips:锁没有降级的概念,只能是释放完之后改为未锁定状态

AI大模型学习福利

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。


因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获

四、AI大模型商业化落地方案

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量

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

PyTorch安装过程出错日志分析与Miniconda修复策略

PyTorch安装过程出错日志分析与Miniconda修复策略 在人工智能项目开发中,最令人沮丧的场景之一莫过于:代码写完、模型设计妥当,却卡在第一步——import torch 报错。这种“环境问题”看似简单,实则背后隐藏着复杂的依赖链冲突、版…

作者头像 李华
网站建设 2026/4/16 4:50:43

Miniconda-Python3.9环境下运行Detectron2目标检测框架

Miniconda-Python3.9环境下运行Detectron2目标检测框架 在深度学习项目中,环境配置往往比模型训练本身更让人头疼。你是否曾遇到过这样的场景:代码在同事的机器上完美运行,而你在本地却因依赖冲突、CUDA版本不匹配或编译失败而卡住数小时&…

作者头像 李华
网站建设 2026/4/7 14:29:58

Miniconda-Python3.9中如何卸载并重新安装PyTorch GPU版本

Miniconda-Python3.9中如何卸载并重新安装PyTorch GPU版本 在深度学习项目开发过程中,环境配置的稳定性直接决定了实验能否顺利推进。哪怕是最基础的torch.cuda.is_available()返回False,也可能让整个训练流程陷入停滞。尤其是在使用Miniconda管理的Pyt…

作者头像 李华
网站建设 2026/4/16 2:24:31

Miniconda-Python3.9是否支持PyTorch 2.x最新特性体验?

Miniconda-Python3.9 是否支持 PyTorch 2.x 最新特性?实测告诉你答案 在深度学习项目中,你是否曾遇到过这样的场景:好不容易写完模型代码,结果训练速度慢得像“爬行”,显存还爆了;或者换一台机器复现实验时…

作者头像 李华
网站建设 2026/4/15 3:18:17

Novellus 03-259745-00

Novellus 03-259745-00 电缆组件概述Novellus 03-259745-00 是用于半导体制造设备的电缆组件,通常与 I/O(输入/输出)、WTS(晶圆传输系统)及 MC3 平台控制器配套使用。该组件在设备通信和信号传输中起关键作用&#xff…

作者头像 李华
网站建设 2026/4/15 11:34:45

Miniconda-Python3.9环境下实现PyTorch多卡并行训练准备

Miniconda-Python3.9环境下实现PyTorch多卡并行训练准备 在深度学习模型日益庞大的今天,单张GPU已经难以支撑大模型的训练需求。动辄数十亿参数的网络结构、海量数据集和复杂的优化流程,让训练周期变得漫长而不可控。尤其是在视觉与语言任务中&#xff…

作者头像 李华