当前位置: 首页 > news >正文

Java并发-synchronized关键字

概念

是利用锁的机制来实现同步的。

锁机制有如下两种特性:

互斥性:即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程中的协调机制,这样在同一时间只有一个线程对需同步的代码块(复合操作)进行访问。互斥性我们也往往称为操作的原子性。

可见性:必须确保在锁被释放之前,对共享变量所做的修改,对于随后获得该锁的另一个线程是可见的(即在获得锁时应获得最新共享变量的值),否则另一个线程可能是在本地缓存的某个副本上继续操作从而引起不一致。

用法

根据修饰对象分类

1.1同步方法

Public synchronized void methodName(){ …… }

1.2同步代码块

synchronized(this|object) {} synchronized(类.class) {}

根据获取的锁分类

  1. 获取对象锁

synchronized(this|object) {}

修饰非静态方法

在 Java 中,每个对象都会有一个 monitor 对象,这个对象其实就是 Java 对象的锁,通常会被称为“内置锁”或“对象锁”。类的对象可以有多个,所以每个对象有其独立的对象锁,互不干扰。

  1. 获取类锁

synchronized(类.class) {}

修饰静态方法

在 Java 中,针对每个类也有一个锁,可以称为“类锁”,类锁实际上是通过对象锁实现的,即类的 Class 对象锁。每个类只有一个 Class 对象,所以每个类只有一个类锁。

在 Java 中,每个对象都会有一个 monitor 对象,监视器。

  1. 某一线程占有这个对象的时候,先monitor 的计数器是不是0,如果是0还没有线程占有,这个时候线程占有这个对象,并且对这个对象的monitor+1;如果不为0,表示这个线程已经被其他线程占有,这个线程等待。当线程释放占有权的时候,monitor-1;
  2. 同一线程可以对同一对象进行多次加锁,+1,+1,重入性
  • synchronized原理分析

1.锁方法

方法的加锁:ACC_SYNCHRONIZED

2.锁代码块

代码块的加锁:monitorenter和monitorExit配合使用

Java虚拟机对synchronized的优化

JDK1.6以前重量锁

偏向锁

偏向锁在对象第一次被某一线程占有的时候,是否偏向锁置1,锁表01,写入线程号,当其他的线程访问的时候,竞争,失败 轻量级锁

多次被第一次占有它的线程获取次数多,成功

CAS算法 campany and set(CAS)

无锁状态时间非常接近

竞争不激烈的时候适用

轻量级锁线程有交替适用,互斥性不是很强,CAS失败,00

重量级锁:(等待时间长)

http://www.jsqmd.com/news/1281801/

相关文章:

  • 输入框打字 输入法打完按了回车就消失了
  • NBM7100A与PIC18F4610的物联网电源管理方案解析
  • MAI Gateway 安全观察:OpenAI 越狱一周才被发现,你的企业 AI 还在裸奔吗
  • 攻防世界-glance-50-WriteUp附Python解题脚本
  • TPIC7710EVM评估板在汽车电子驻车制动系统开发中的实战应用
  • 历史心学数字化:代数系统与可视化技术解析
  • 3 连接mysql 数据库 进行数据的存储和读取
  • 计算机毕业设计之《学生手册》线上考试系统设计与实现
  • 2026年7月荔城区三类防水痛点解析 莆田正规漏水检测维修商家 - 吉林同城获客
  • Flume工具
  • Hermes Agent 入门到深入:会学习的开源 AI Agent 是怎么工作的
  • 智能电视的浏览器革命:TV Bro如何重新定义大屏上网体验
  • 2026吉他选购实测攻略|500-3000元档位拆解,学生党直接抄作业
  • 浏览器端模型推理:ONNX Runtime Web 与 WebGPU 后端
  • Java集合面试题专题
  • NBM7100A芯片与PIC18F微控制器优化IoT设备电池续航
  • 快速找回QQ空间全部历史说说的终极免费工具GetQzonehistory使用指南
  • 时间序列反事实必要性解释:TimePNS框架原理与实战应用
  • C语言—求出现次数超过数组长度一半的数
  • AI+iPaaS解决方案:跨系统业务流程自动化助力企业AI化转型
  • Wayfinder Router:AI应用成本与性能优化的智能路由解决方案
  • Ollama 部署的十个生产环境陷阱:显存不足、并发雪崩与模型版本混乱
  • 2026尤克里里选购指南|告别5大误区,4款高性价比机型实测推荐
  • 如何用MemcardRex终极PS1记忆卡编辑器轻松管理你的经典游戏存档
  • 3个真实场景告诉你:为什么Umi-OCR是处理大量图片文字的神器
  • 2026聊城化妆美甲美睫学校3家精选推荐,影视美妆首选创影 - 速递信息
  • AngularJS通过$sce输出html的方法
  • 最大连续子串
  • PreparedStatement的jdbc相关操作
  • 高效、免费、开源:GetQzonehistory让QQ空间历史说说备份变得简单