Я читаю источник java.util.concurrent.ArrayBlockingQueue
, и нашел код, который я не понимаю:
private final ReentrantLock lock;
public boolean offer(E e) {
if (e == null) throw new NullPointerException();
final ReentrantLock lock = this.lock;
lock.lock();
try {
if (count == items.length)
return false;
else {
insert(e);
return true;
}
} finally {
lock.unlock();
}
}
Обратите внимание на эту строку:
final ReentrantLock lock = this.lock;
Почему он не использует this.lock
напрямую, но назначает его локальной переменной?