0
Я не могу понять, как это сделать. У меня есть это ограничение:синхронизировать чтение переменной
- в большинстве 5 потоков одновременно может прочитать переменную, остальные должны держать в засаде, пока переменная не может быть прочитана снова.
public void methodA() {
lockI.lock();
try {
while (countIreaders == 5 || modify) {
conditionI.await();
}
countIreaders++;
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
if (condition) {
countIreaders = 0;
lockI.unlock();
conditionI.notifyAll();
} else {
lockI.unlock();
}
}
}
С помощью этого кода я сделал это серийным, но это не то, что я хочу достичь. Как я могу изменить код?
Почему вы устанавливаете 'countIreaders' в 0 в своем блоке finally? – yunandtidus
Я не понимаю. –
Не могли бы вы объяснить, почему важно, сколько читателей читает? – Arkadiy