java - 为什么 j.u.c.CopyOnWriteArrayList 在方法内部创建局部锁变量

标签 java concurrency

<分区>

我最近检查了 OpenJDK 源代码中 j.u.c.CopyOnWriteArrayList 的实现,发现类中定义的锁变量用以下语句重新声明

final ReentrantLock lock = this.lock;

在所有需要这个变量的方法中。对变量进行此类重新声明的任何特定原因(可能隐藏全局变量)。我们不能简单地直接使用对象的“锁定”字段吗。

最佳答案

那只是一种微优化技术。理论上,访问局部变量比访问字段更快,而且它也可能导致更小的字节码。尽管 HotSpot 编译器实际上可能优化了对寄存器调用的字段访问,所以它不会有什么不同。

关于java - 为什么 j.u.c.CopyOnWriteArrayList 在方法内部创建局部锁变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3866537/

相关文章:

java - Netbeans 8.1是否可以指定以分解模式将ear部署到wildfly

java - 实现远程代理

C++ 简单消费者生产者问题

c# - 需要多个锁对象?

java - 有没有办法获取maven插件版本及其所需的java版本的映射?

java - SQL 条件语句

java - 无法执行目标 org.apache.maven.plugins :maven-antrun-plugin

java - java中的并发编程

java - OpenJDK 的 LinkedBlockingQueue 实现 : Node class and GC

node.js - 如何重试mongodb事务?