在java ArrayBlockingQueue
实现中,始终按照以下方式执行锁定。
主锁在源代码中被声明为最终变量,这是有意义的。
/** Main lock guarding all access */
final ReentrantLock lock;
并且在方法中,为了锁定,它按照以下方式进行。
final ReentrantLock lock = this.lock;
lock.lock();
这背后的原因是什么,一般api用户希望做同样的风格,还是针对JDK特定的特殊实现呢?