为什么锁被捕获到局部变量

时间:2012-04-16 19:49:52

标签: java reentrantlock

在java JRE中,我看到了the code

private final ReentrantLock lock;
public E poll() {
        final ReentrantLock lock = this.lock;
        lock.lock();

为什么锁被捕获到私有变量?我希望简单

public E poll() {
        lock.lock();

1 个答案:

答案 0 :(得分:0)

主要是为了确保最佳性能。虽然这是一个真正的微优化,但它可能在性能敏感的代码中,你可能也可以做到。

您还需要非常小心,您正在使用的锁定引用不会发生变异。确保字段final,但是final本地引用是本地显式的。