Мне нужен НЕ повторный вход ReadWriteLock, поскольку блокировка может быть снята другим потоком, отличным от того, который ее получил. (Я понял это, когда начал периодически получать исключение IllegalMonitorStateException.)
Я не уверен, что термин «нереентерабельность» — правильный. ReentrantLock позволяет потоку, который в данный момент удерживает блокировку, получить ее снова. Я НЕ хочу такого поведения, поэтому называю его «невозвратным».
Контекст таков: у меня есть сервер сокетов, использующий пул потоков. НЕ существует нити для каждого соединения. Запросы могут обрабатываться разными потоками. Клиентскому соединению может потребоваться заблокировать один запрос и разблокировать другой запрос. Поскольку запросы могут обрабатываться разными потоками, мне нужно иметь возможность блокировать и разблокировать их в разных потоках.
Предположим, ради этого вопроса мне нужно остаться с этой конфигурацией и что мне действительно нужно блокировать и разблокировать разные запросы и, следовательно, возможно, разные потоки.
Это ReadWriteLock, потому что мне нужно разрешить несколько «читателей» ИЛИ эксклюзивный «писатель».
Похоже, это можно написать с помощью AbstractQueuedSynchronizer, но боюсь, если я напишу это сам, то допущу какую-нибудь тонкую ошибку. Я могу найти различные примеры использования AbstractQueuedSynchronizer, но не ReadWriteLock.
Я мог бы взять исходный код OpenJDK ReentrantReadWriteLock и попытаться удалить реентерабельную часть, но, опять же, боюсь, я бы сделал это. Не совсем правильно понял.
Я поискал в Guava и Apache Commons, но не нашел ничего подходящего. В Apache Commons есть RWLockManager, который может делать то, что мне нужно, но я не уверен, и он кажется более сложным, чем мне нужно.
Подробнее здесь: https://stackoverflow.com/questions/107 ... -i-can-use
Есть ли нереентерабельный ReadWriteLock, который я могу использовать? ⇐ JAVA
Программисты JAVA общаются здесь
1737437442
Anonymous
Мне нужен НЕ повторный вход ReadWriteLock, поскольку блокировка может быть снята другим потоком, отличным от того, который ее получил. (Я понял это, когда начал периодически получать исключение IllegalMonitorStateException.)
Я не уверен, что термин «нереентерабельность» — правильный. ReentrantLock позволяет потоку, который в данный момент удерживает блокировку, получить ее снова. Я НЕ хочу такого поведения, поэтому называю его «невозвратным».
Контекст таков: у меня есть сервер сокетов, использующий пул потоков. НЕ существует нити для каждого соединения. Запросы могут обрабатываться разными потоками. Клиентскому соединению может потребоваться заблокировать один запрос и разблокировать другой запрос. Поскольку запросы могут обрабатываться разными потоками, мне нужно иметь возможность блокировать и разблокировать их в разных потоках.
Предположим, ради этого вопроса мне нужно остаться с этой конфигурацией и что мне действительно нужно блокировать и разблокировать разные запросы и, следовательно, возможно, разные потоки.
Это ReadWriteLock, потому что мне нужно разрешить несколько «читателей» ИЛИ эксклюзивный «писатель».
Похоже, это можно написать с помощью AbstractQueuedSynchronizer, но боюсь, если я напишу это сам, то допущу какую-нибудь тонкую ошибку. Я могу найти различные примеры использования AbstractQueuedSynchronizer, но не ReadWriteLock.
Я мог бы взять исходный код OpenJDK ReentrantReadWriteLock и попытаться удалить реентерабельную часть, но, опять же, боюсь, я бы сделал это. Не совсем правильно понял.
Я поискал в Guava и Apache Commons, но не нашел ничего подходящего. В Apache Commons есть RWLockManager, который может делать то, что мне нужно, но я не уверен, и он кажется более сложным, чем мне нужно.
Подробнее здесь: [url]https://stackoverflow.com/questions/10711447/is-there-a-non-reentrant-readwritelock-i-can-use[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия