Поток, изменяющий данные, должен всегда получать доступ и на чтение, если это понадобилось. Код из предыдущего поста останется без изменений, кроме метода canGrantReadAccess - туда мы добавим проверку того, что текущий поток является записывающим потоком:
private boolean canGrantReadAccess(Thread callingThread) {
if (isWriter(callingThread)) return true;
if(writers > 0) return false;
if(isReader(callingThread) return true;
if(writeRequests > 0) return false;
return true;
}
Комментариев нет:
Отправить комментарий