最近我在java.util.concurrent
ArrayBlockingQueue
/** Number of elements in the queue */
int count;
public int size() {
final ReentrantLock lock = this.lock;
lock.lock();
try {
return count;
} finally {
lock.unlock();
}
}
为什么他们要同步对count
变量的访问并将其视为关键部分?为什么不简单地使count
易失并返回呢?
我了解到对于add/poll
方法来说,这种同步是不可避免的,但是这里count
并没有被修改。
能给我澄清一下吗?