已知:
我们在网上查阅资料时会发现,自旋优化是用在轻量级锁中的,当自旋超过n次,则升级为重量级锁.
有一种新的自旋操作是自适应自旋,即根据过往经验,判断自旋判断标准中的n具体为多少.
求解:
现在的问题是既然锁的升级是单向的,那么自适应锁怎么会得到过往经验呢?按理说升级为重量级锁之后就不会再降级为轻量级锁,也就不会再面临自旋次数的选择了.也就是说这个次数的判定只会出现一次,感觉逻辑上出了点问题,希望能得到大家的回答.
关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率

已结题
关于自旋锁 重量级锁 轻量级锁 的相关问题
收起
- 写回答
- 好问题 0 提建议
- 关注问题
微信扫一扫
点击复制链接分享
- 邀请回答
- 编辑 收藏 删除
- 收藏 举报
3条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
爪巴羊男爪巴 2021-12-08 12:52关注我又重新看了《深入理解java虚拟机》给的定义,"如果在同一个锁对象上,自旋等待刚刚成功获得过锁,并且持有锁的线程正在运行中,那么虚拟机就会认为这次自旋也很有可能再次成功,进而允许自旋等待持续相对更长的时间",我的理解如下:
这里我原来将一段同步代码块看作一个锁,但实际上在java中锁的单位应该是对象锁或类锁,也就是说,一个对象锁可能对应很多同步代码块,当然,由于我们编程的习惯以及代码本身来说,用同一把锁锁住的代码块往往具有相似性,也就是应用场景相似,所以可以借用上次的经验,这个过程中是同一个线程和同一个对象(对象锁)的对应关系,并不是从上一个线程获得的经验。本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
编辑预览轻敲空格完成输入- 显示为
- 卡片
- 标题
- 链接
评论按下Enter换行,Ctrl+Enter发表内容
编辑
预览

轻敲空格完成输入
- 显示为
- 卡片
- 标题
- 链接
报告相同问题?
提交
- 2020-08-25 15:41Java锁的升级策略是指Java语言中锁机制的四种状态:无锁状态、偏向锁、轻量级锁、重量级锁。这些锁状态都是专门针对Synchronized关键字的,是为了提高获得锁和释放锁的效率。 首先,无锁状态是指没有任何锁的状态。...
- 2017-04-19 14:31朱清震的博客 前面提到了java的4种锁,他们分别是重量级锁、自旋锁、轻量级锁和偏向锁, 不同的锁有不同特点,每种锁只有在其特定的场景下,才会有出色的表现,java中没有哪种锁能够在所有情况下都能有出色的效率,引入这么多锁...
- 2023-11-30 08:37java 中的锁 -- 偏向锁、轻量级锁、自旋锁、重量级锁
- 2013-10-13 02:10很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁,...
- 2024-01-30 04:01谦风(Java)的博客 锁的状态从低到高依次为无锁->偏向锁->轻量级锁->重量级锁,升级的过程就是从低到高,降级在一定条件也是有可能发生的,优化机制包括自适应锁、自旋锁、锁消除、锁粗化、轻量级锁和偏向锁。这边主要以synchronized、...
- 2024-07-01 12:20我想發財的博客 【总结】多线程竞争锁对象时,首先会有一个线程抢到锁执行同步块,其他线程会...【轻量级锁总结】轻量级锁是jdk1.6引入的线程优化,当锁对象使用的是轻量级锁时,说明当前同步块。,不需要上升到操作系统级别的阻塞。
- 2019-08-01 12:30NullPointExceptionc的博客 一、自旋锁如果持有锁的线程能在很短时间内释放锁资源,那么那些等待竞争锁的线程就不需要做内核态和用户态之间的切换进入阻塞挂起状态,它们只需要等一等(自旋),等持有锁的线程释放锁后即可立即获取锁,这样就...
- 2019-04-16 06:46pocher的博客 java中每个对象都可作为锁,锁有四种级别,按照量级从轻到重分为:无锁、偏向锁、轻量级锁、重量级锁。并且锁只能升级不能降级。 在讲这三个锁之前,我先给大家讲清楚自旋和对象头的概念。 自旋 现在假设有这么一...
- 2021-07-02 03:41c.的博客 文章目录Java锁synchronized关键字学习系列之轻量级锁升级回顾轻量级锁的加锁过程自旋什么情况下轻量级锁要升级为重量级锁呢?轻量级锁升级重量级锁参考源代码 Java锁synchronized关键字学习系列之轻量级锁升级 这篇...
- 2022-06-16 02:54遇君行的博客 概况Java中的偏向锁、轻量级锁、重量级锁、自旋锁、自适应自旋锁
- 2021-02-12 10:03ssertp的博客 自旋锁Java没有自旋锁的API,因为自旋锁并不是一种锁,而是一种锁优化技术互斥同步进入阻塞状态的开销都很大,应该尽量避免。在许多应用中,共享数据的锁定状态只会持续很短的一段时间。自旋锁的思想是让一个线程在...
- 2022-05-19 01:45超级码里喵的博客 为什么会有偏向锁、轻量级锁和重量级锁? 并发锁总共有4种状态:无锁状态、偏向锁状态、轻量级锁状态和重量级锁状态,每种状态在并发竞争情况下需要消耗的资源由低到高,性能由高到低。重量级锁需要通过操作系统在...
- 2023-08-12 09:49悬浮海的博客 轻量级锁与重量级锁、内核态与用户态
- 2021-08-15 11:04逍遥ovo的博客 重量级锁和轻量级锁 重量级锁和轻量级锁 一般(一般一般一般) 类似于悲观锁和乐观锁,站在了不同的角度划分的。 轻量级锁又叫自旋锁。 重量级锁与轻量级锁是站在 工作量 的角度来划分的; 而乐观锁和悲观锁则是站...
- 2021-03-18 04:20weixin_39851918的博客 锁状态锁信息存储在java对象的markword内容中markword数据的长度在32位和64位的虚拟机(未...如下表所示:状态 标志位 存储内容未锁定 01 对象哈希码、对象分代年龄轻量级锁定 00 指向锁记录的指针膨胀(重量级锁定) ...
- 2021-07-08 12:12959y的博客 文章目录一、简介二、Java对象头中的Mark Word三、偏向锁四、轻量级锁五、重量级锁六、自旋锁七、锁升级过程 一、简介 在讲解这些锁概念之前,我们要明确的是这些锁不等同于Java API中的ReentratLock这种锁,这些锁...
- 2023-02-24 19:41翠花也老了的博客 加锁会带来性能开销,Java 1.6之前只有重量级锁。上图讲述了两个线程ThreadA和ThreadB两个线程在争抢锁,ThreadA...Java 1.6 之后做了优化,出现了“轻量级锁 和 偏向锁”,能够减少重量级锁的获得和释放的性能开销。
- 2022-07-21 09:15是七叔呀的博客 乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低,。java中的乐观锁基本都是通过CAS操作实现的,CAS是一种更新的原子操作,比较当前值跟传入值是否一样,一样则更新,否则失败。.........
- 没有解决我的问题, 去提问
问题事件
联系我们(工作时间:8:30-22:00)
400-660-0108kefu@csdn.net在线客服
- 京ICP备19004658号
- 经营性网站备案信息
公安备案号11010502030143
- 营业执照
- 北京互联网违法和不良信息举报中心
- 家长监护
- 中国互联网举报中心
- 网络110报警服务
- Chrome商店下载
- 账号管理规范
- 版权与免责声明
- 版权申诉
- 出版物许可证
- ©1999-2025北京创新乐知网络技术有限公司