size()方法同步的原因是什么?

时间:2019-06-26 13:13:53

标签: java multithreading concurrency java.util.concurrent blockingqueue

最近我在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并没有被修改。

能给我澄清一下吗?

0 个答案:

没有答案