Java “是什么意思?”;“快速通道”;无竞争同步?

Java “是什么意思?”;“快速通道”;无竞争同步?,java,concurrency,synchronization,volatile,Java,Concurrency,Synchronization,Volatile,从的“性能和可扩展性”一章: 同步机制针对无竞争的情况进行了优化 案例(volatile总是无争议的),在本文中 “快速路径”无争用同步范围的性能成本 大多数系统的时钟周期为20到250个 作者在这里所说的快速路径无争用同步是什么意思?我不熟悉这本书的主题,但一般来说,“快速路径”是一个特定的可能控制流分支,它比其他分支效率更高,因此更受欢迎,但不能处理复杂的情况 我假设这本书讨论的是Java的synchronizedblock/qualifier。在这种情况下,快速路径很可能是很容易检测到没有

从的“性能和可扩展性”一章:

同步机制针对无竞争的情况进行了优化 案例(volatile总是无争议的),在本文中 “快速路径”无争用同步范围的性能成本 大多数系统的时钟周期为20到250个


作者在这里所说的快速路径无争用同步是什么意思?

我不熟悉这本书的主题,但一般来说,“快速路径”是一个特定的可能控制流分支,它比其他分支效率更高,因此更受欢迎,但不能处理复杂的情况


我假设这本书讨论的是Java的
synchronized
block/qualifier。在这种情况下,快速路径很可能是很容易检测到没有其他线程访问相同数据的路径。那么,这本书所说的是,
synchronized
的实现已经过优化,以便在只有一个线程实际使用对象的情况下具有最佳性能,与使用多个线程的情况相反,同步实际上必须在多个线程之间进行调解。

获取同步锁的第一步是单个易失性写入(监视器所有者字段)。如果锁是无争用的,那么这就是将要发生的一切


如果锁有争议,则会有各种上下文切换和其他机制来增加时钟周期。

这里有两个不同的概念

  • 快速路径和慢速路径代码
  • 无竞争和竞争同步
  • 慢路径与快路径代码

    这是识别特定于机器的二进制代码的生产者的另一种方法

    热点VM,慢速路径代码是由C++实现产生的二进制代码,其中快速路径代码是JIT编译器生成的代码。 一般来说,快速路径代码要优化得多。全面理解JIT编译器

    无争用和争用同步

    Java的同步构造()具有所有权的概念。当一个线程试图锁定(获得所有权)监视器时,它可以被锁定(由另一个线程拥有)或解锁

    无争用同步发生在两种不同的场景中:

  • 未锁定的监视器(所有权已丢失)
  • 监视器已由同一线程拥有
  • 另一方面,争用同步意味着线程将被阻塞,直到所有者线程释放监视器锁

    回答问题


    作者所说的快速路径无争用同步是指在最便宜的场景(无争用同步)中最快的字节码转换(快速路径)。

    您进行过谷歌搜索吗。我遇到了这样的问题:我不明白这是如何回答什么是
    快速路径的问题的?如果这里有隐含的东西,你能把它显化吗?快速路径是读写单个字段。慢路径是挂起线程并保存线程上下文。