Общее·количество·просмотров·страницы

Java Dev Notes - разработка на Java (а также на JavaScript/Python/Flex и др), факты, события из АйТи

Архив блога

вторник, 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;
}

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

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

Постоянные читатели