首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是自适应纺丝w.r.t锁定获取?

什么是自适应纺丝w.r.t锁定获取?
EN

Stack Overflow用户
提问于 2013-12-19 19:06:48
回答 1查看 2K关注 0票数 15

java 6在提高内部锁性能方面带来的四大变化之一是自适应旋转技术。什么是适应性纺丝?它是自旋锁和互斥锁的组合吗?有人能用一种简单易懂的方式来解释这种策略的用处吗?从JDK6开始,这种策略在默认情况下是可用的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-19 19:27:08

什么是适应性纺丝?

引用此Java 6性能页面

自适应自旋是一种优化技术,在这种优化技术中,试图进行竞争的同步进入操作的线程采用两相自旋加块策略。这种技术使线程能够避免影响性能的不良影响,例如上下文切换和翻译旁缓存(TLB)的重新填充。它是“自适应的”,因为自旋的持续时间是由基于诸如最近在同一监视器上的自旋尝试的成功率和/或失败率以及当前锁所有者的状态的决策决定的。

因此,线程最初尝试旋转几次,试图在实际阻塞之前获取一个锁。然后,在将来,它使用以前的成功/失败度量来自适应地决定它应该尝试旋转还是阻塞。旋转会浪费CPU时间,而阻塞可能会导致上下文切换,并且线程可能会等待超过必要的时间。我们的目标是根据过去的行为来优化这两个问题。

有关更多细节,performance引用了这个由Dice编写的题为Java 6 (HotSpot)中的同步的演示文稿。第一张幻灯片的标题是“竞争成本(可伸缩性+延迟)”:

  • 上下文切换非常昂贵。
  • 无界纺纱是不可接受的。
  • 自适应纺丝地址

演示文稿后面有题为“自适应旋转”的幻灯片:

  • 自旋对块策略
    • 通过在多处理器系统上旋转来避免上下文切换。

  • 自旋持续时间
    • 维护每台监视器
    • 根据最近的旋转成功/失败率的历史变化

  • 适应系统负载、并行性、应用模式。
  • 多处理器-礼貌纺纱
  • 避免在徒劳无益的条件下纺纱(业主被堵住了)

有趣的东西。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20689718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档