6

在java JRE中我看到了代码

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

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

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

1 回答 1

0

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

您还需要非常小心,您正在使用的锁引用不会发生变化。当然 make field final,但是获取final本地引用是本地显式的。

于 2012-04-16T19:52:31.603 回答