Java的Lock(二)

自旋锁 VS 适应性自旋锁

堵塞或者notify一个Java线程需要操作系统切换CPU状态来完成(详情请参考11408)。这种状态切换需要耗费CPU时间。如果同步代码块种的内容过于简单。状态切换消耗的时间可能比用户代码执行的时间还要长。
在许多场景中,同步资源的锁定时间很短,为了这一段时间去切换线程,线程挂起和恢复现场的花费可能会让系统得不偿失。如果机器有多个CPU,能够让两个或以上的线程同时并行执行,就可以让后面那个请求锁的线程不放弃CPU的执行时间,看看持有锁的线程是否很快释放锁。
为了让当前线程"等一下" 我们需让当前线程进行自旋,如果在自旋完成后前面同步资源已经释放了锁。那么当前线程就可以不必堵塞而是直接获取同步资源。避免线程切换的开销。这就是自旋

在这里插入图片描述
自旋锁本身就有缺点。他不能代替堵塞。自旋等待虽然避免了线程切换的开销,但是他要占用CPU时间。如果锁被占用的时间很短。自旋等待的效果就会比较好。反之,如果锁被占用的时间很长。那么自旋的线程只会白白浪费CPU资源。所以 自旋等待的时间必须要有一定的限制。如果自旋超过一定的次数(JDK默认10次 参数PreBlockSpin)没有成功获得锁 就应该suspend

自旋锁的实现原理同样也是CAS。AtomicInteger中调用unsafe进行自增操作的源码中的do-while循环就是一个自旋操作。如果修改数值失败则通过循环来执行自旋。知道修改成功

    public final 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/479449.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【.NET Core】C#编程规范

【.NET Core】C#编程规范 文章目录 【.NET Core】C#编程规范一、概述1.1 结构清晰第一1.2 简洁之风1.3 代码风格保持一致性 二、命名约定三、类型参数命名指南3.1 请使用描述性名称命名泛型类型参数,除非单个字面名称完全具有自我说明性且描述性名称不会增加任何作用…

当Diffusion遇到Transformer

Diffusion与Tranformer结合的代表性文章 一、DiT 题目: Scalable Diffusion Models with Transformers 机构:UC Berkeley,纽约大学 论文: https://arxiv.org/pdf/2212.09748.pdf 代码:https://github.com/facebookresearch/DiT 任务: 图像生…

SQL Developer 小贴士:显示RAC配置

前提: 已建立2节点RAC已在SQL Developer中建立了2个连接,分别到RAC的两个节点 然后单击菜单View>DBA,分别连接RAC节点1和节点2,并组织成目录(不必须,但建议)。 在两处可以体现为RAC配置。第…

第3.2章:Doris-2.0数据导入——Compaction机制

目录 一、Compaction概述 1.1 LSM-Tree概述 1.2 Compaction概述 1.3 Rowset数据版本 1.4 Compaction优点 1.5 Compaction问题 1.5.1 Compaction速度低 1.5.2 写放大问题 1.6 Compaction调优 1.6.1 业务侧 1.6.2 运维侧 二、Compaction执行方式 2.1 Vertical Com…

成都力寰璨泓科技有限公司抖音小店品质保障

在数字化浪潮席卷全球的今天,网络购物已成为人们日常生活的重要组成部分。抖音小店作为新兴的电商平台,凭借其独特的社交属性和个性化推荐机制,吸引了众多消费者的目光。在众多抖音小店中,成都力寰璨泓科技有限公司的店铺以其卓越…

春招面试准备笔记——NMS(非极大值抑制)算法

NMS(非极大值抑制)算法非极大值抑制是用于减少物体检测算法中重叠边界框或区域的数量的技术。通过对每个类别的检测框按置信度排序,然后逐个遍历,保留置信度最高的框,并抑制与其重叠且置信度低的框,从而得到…

打通全渠道,聚道云助力时尚巨头提升运营效能

客户介绍: 北京某时尚有限公司是一家集设计、生产、销售于一体的时尚产业领军企业。自成立以来,该公司一直秉承着对时尚的独特理解和不懈追求,以打造高品质、高品位的时尚产品为己任,深受国内外消费者的喜爱。 客户痛点&#xff…

23款奔驰GLC260L升级固定踏板 豪华氛围灯 浪漫的气氛

奔驰看内饰,但23款GLC260L十一月份后的车 减配了豪华氛围灯 ,内饰瞬间少了点意思,所以车主过来升级一套豪华氛围灯 前后发光出风口 门板扶手也升级为发光的 顺带升级一套固定踏板 接下来看图,星骏汇小许Xjh15863

SG-8201CJA(汽车可编程晶体振荡器)

爱普生的SG-8021CJA是一款符合AEC-Q100标准的晶体振荡器,专为要求苛刻的汽车/ADAS应用(如激光雷达和相机ECU)而设计。它采用爱普生的内部低噪声小数NPLL,输出 频率高达170MHz,相位抖动小于1/25,稳定性比之前…

【4.3计算机网络】网络规划与设计

目录 1.网络规划2.逻辑网络设计3.物理网络设计 1.网络规划 需求分析->通信规范分析->逻辑网络设计->物理网络设计->实施阶段 2.逻辑网络设计 3.物理网络设计 例题1: 解析:选A。 例题2: 解析:选A。 例题3. 解析&am…

Java 反射 类加载阶段 类加载时机 Class类 Field类 Method类 Constructor类

JAVA反射机制是在运行状态中,对任意一个类,都能知道这个类的所有属性和方法;对任意一个对象,都能够调用它的任意方法和属性,这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。 反射(Reflect)是在运…

3dmax渲染有噪点的六大原因及解决方案

3dmax效果图渲染可以试试云渲染——渲染100(支持批量渲染,不占用本地电脑资源,最高480线程大大提高渲染效率) 问题一:图像尺寸过低导致渲染效果不佳 原因:3dmax中的图像尺寸过低,导致渲染后的效…