java - "fast-path"无竞争同步是什么意思?

标签 java concurrency synchronization volatile

摘自 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.

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

最佳答案

这里有两个截然不同的概念。

  1. 快路径和慢路径代码
  2. 无竞争和有竞争的同步

慢速路径与快速路径代码

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

对于 HotSpot VM,慢速路径代码 是由 C++ 实现生成的二进制代码,其中快速路径代码 表示由 JIT 编译器生成的代码。

在一般意义上,快速路径代码要优化得多。全面了解 JIT 编译器 wikipedia is a good place to start .

无竞争和有竞争的同步

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

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

  1. 解锁监视器(所有权获得海峡)
  2. 监控已被同一个线程拥有

另一方面,竞争同步意味着线程将被阻塞,直到所有者线程释放监视器锁。

回答问题

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

关于java - "fast-path"无竞争同步是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18559463/

相关文章:

java - 阻塞线程 - Java

c# - 如何在 C# 中同时运行服务的多个实例?

java - Java 中的局部对象变量线程安全

java - 方法 synchronizedMap(HashMap<Integer,Serializable>) 对于类型 Collections 是未定义的

java - pom.xml 打包为 ejb 时出现 Maven 错误,但打包为 jar 时消失

java - RecycleViewAdapter 在加载其项目时出现 null 异常( fragment 中的 RecycleView)

java - Web 应用程序 Controller 中的参数映射大小验证与 Web 安全有什么好处

java - 线程和同步方法

java - 在更新删除和插入时将电话簿联系人与我的应用程序同步的最佳方式

java - 当 JDBC 本质上是阻塞时,使用 Play 框架是否有益?