вторник, 14 сентября 2010 г.

Блокировка чтения/записи. Часть 5

Наконец, последний случай, который мы рассмотрим - если потоку, который имеет доступ на запись, понадобилось вдруг получить также доступ на чтение.

Поток, изменяющий данные, должен всегда получать доступ и на чтение, если это понадобилось. Код из предыдущего поста останется без изменений, кроме метода 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;
}

Комментариев нет:

Отправить комментарий