5

I wonder why we can see this type of code pattern in java.util.concurrent classes:

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

I don't understand why we must copy the reference to the lock before we call the lock() and unlock() method as the lock attribute is final.

Thanks for your help,

Romain.

Romain
  • 91
  • 3

0 Answers0