Вопрос

Просто быстрый вопрос о ReadWriteLocks в Java (в частности, о реализации ReentrantReadWriteLock), поскольку я не нахожу документацию sun понятной.

Что произойдет, если блокировка чтения удерживается потоком, когда другой запрашивает блокировку записи?Должен ли поток блокировки записи ожидать снятия всех удерживаемых в данный момент блокировок чтения?Кроме того, блокируются ли все новые запросы на блокировку чтения до тех пор, пока не будет предоставлена и снята блокировка записи?

Спасибо

Это было полезно?

Решение

Javadoc объясняет это:

Этот класс не навязывает порядок предпочтений чтения или записи для блокировки доступа.Тем не менее, он поддерживает необязательный честность политика.Если сконструировано как справедливое, потоки претендуют на участие, используя приблизительно политику заказа на прибытие.Когда блокировка записи будет снята либо самый ожидаемый сингл writer будет назначен режим записи блокировка, или если есть ожидающее устройство чтения дольше, чем любое средство записи, набору считывателей будет присвоен режим чтения блокировка.Если сконструировано как несправедливое, порядок въезда в шлюз должен не соответствовать порядку прибытия.В любом из случаев, если устройства чтения активны и устройство записи вводит блокировку, то никакие последующие устройства чтения не будут предоставлены блокировка чтения до тех пор, пока это устройство записи не получит и не снимет блокировку записи .


Что произойдет, если блокировка чтения удерживается потоком, когда другой запрашивает блокировку записи?Должен ли поток блокировки записи ожидать снятия всех удерживаемых в данный момент блокировок чтения?

Да, писателю придется подождать.Но он будет ждать только удерживаемых в данный момент блокировок чтения.Все читатели, пришедшие позже, встанут в очередь после автора.

Кроме того, блокируются ли все новые запросы на блокировку чтения до тех пор, пока не будет предоставлена и снята блокировка записи?

ДА

Другие советы

A ReadWriteLock блокировка записи не может удерживаться одновременно с блокировками чтения.Запросы, скажем, на блокировку записи при удержании блокировки чтения приведут к блокировке или сбою.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top