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

时间:2010-10-05 18:23:11

标签: java concurrency

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

final ReentrantLock lock = this.lock;

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

1 个答案:

答案 0 :(得分:7)

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