摘自 JCIP book 的性能和可扩展性一章:
The synchronized mechanism is optimized for the uncontended case(volatile is always uncontended), and at this writing, the performance cost of a "fast-path" uncontended synchronization ranges from 20 to 250 clock cycles for most systems.
作者在这里所说的快速路径无竞争同步是什么意思?
最佳答案
这里有两个截然不同的概念。
- 快路径和慢路径代码
- 无竞争和有竞争的同步
慢速路径与快速路径代码
这是识别机器特定二进制代码的生产者的另一种方法。
对于 HotSpot VM,慢速路径代码 是由 C++ 实现生成的二进制代码,其中快速路径代码 表示由 JIT 编译器生成的代码。
在一般意义上,快速路径代码要优化得多。全面了解 JIT 编译器 wikipedia is a good place to start .
无竞争和有竞争的同步
Java 的同步构造 (Monitors) 具有所有权的概念。当一个线程试图锁定(获得所有权)监视器时,它可以被锁定(由另一个线程拥有)或解锁。
无竞争同步发生在两种不同的场景中:
- 解锁监视器(所有权获得海峡)
- 监控已被同一个线程拥有
另一方面,竞争同步意味着线程将被阻塞,直到所有者线程释放监视器锁。
回答问题
作者所说的快速路径无竞争同步是指在成本最低的场景(无竞争同步)中最快的字节码转换(快速路径)。
关于java - "fast-path"无竞争同步是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18559463/