Gee*_*eek 13 java concurrency multithreading java.util.concurrent
关于提高内在锁的性能,Java 6带来的四个主要变化之一是Adapative Spinning技术.什么是自适应纺纱?它是自旋锁和互斥锁的组合吗?有人可以用一种易于理解的方式解释这种策略的有用性,默认情况下可以从JDK6开始使用.
Gra*_*ray 13
什么是自适应纺纱?
引用此Java 6性能页面:
自适应旋转是一种优化技术,其中线程尝试进行竞争同步输入操作时使用两阶段旋转然后块策略.该技术使线程能够避免影响性能的不良影响,例如上下文切换和转换后备缓冲区(TLB)的重新填充.它是"自适应的",因为旋转的持续时间是由基于诸如同一监视器上的最近旋转尝试的成功率和/或失败以及当前锁定所有者的状态等因素的策略决定来确定的.
因此线程最初尝试旋转几次尝试在实际阻塞之前获取锁.然后在将来它使用先前的成功/失败指标来自适应地确定它是否应该尝试旋转或阻塞.旋转会浪费CPU时间,而阻塞可能会导致上下文切换,并且线程可能会等待比必要时间更长的时间.目标是尝试根据过去的行为优化这两个问题.
有关更多详细信息,性能文档引用了Dave Dice 在此标题为" Java SE 6中的同步(HotSpot)"的演示文稿.第一张幻灯片标题为"竞争成本(可扩展性+延迟)":
在演示文稿的后面有一张名为"自适应旋转"的幻灯片:
有趣的东西.
归档时间: |
|
查看次数: |
1181 次 |
最近记录: |