Как ждать данных с ReentrantReadWriteLock?

Он сказал, чтоReentrantReadWriteLock предназначен для одного писателя и нескольких читателей.

Тем не менее, читатели должны подождать, пока в буфере не появятся некоторые данные.

Итак, что заблокировать?

Я создал объекты параллелизма следующим образом:

private final ReentrantReadWriteLock rwl = new ReentrantReadWriteLock();
protected final Lock readLock = rwl.readLock();
protected final Lock writeLock = rwl.writeLock();
protected final Condition hasData = writeLock.newCondition();

сейчас в методе записи я делаю:

writeLock.lock();

// writing first portion and updating variables

hasData.signalAll();

// if required then writing second portion and updating variables

hasData.signalAll();

Но как написать читателю? Должен ли он приобрести толькоreadLock? Но как он может ждать сигнала тогда? Если это также приобретаетwriteLock тогда где превосходство блокировки чтения / записи?

Как обеспечить, чтобы требуемые переменные не изменялись во время чтения, если они защищены только?writeLock

QUEUES DON 'Т СОВМЕСТНАЯ ЗАДАЧА

Это вопрос о.ReentrantReadWriteLock

Ответы на вопрос(3)

Ваш ответ на вопрос