为什么在锁定前复制引用?

时间:2015-05-11 12:43:07

标签: java concurrency locking

我想知道为什么我们可以在java.util.concurrent类中看到这种类型的代码模式:

public class ArrayBlockingQueue...
    ...
    final ReentrantLock lock;
    ...
    public boolean offer(E e) {
    checkNotNull(e);
    final ReentrantLock lock = this.lock;
    lock.lock();
    try {
        ...
    } finally {
        lock.unlock();
    }
}

我不明白为什么在调用lock()和unlock()方法之前我们必须复制对锁的引用,因为lock属性是final。

感谢您的帮助,

罗曼。

0 个答案:

没有答案