Могу ли я изменить java.util.concurrent.locks.Lock на java.util.concurrent.locks.ReentrantReadWriteLock;

У меня есть метод, который создает блокировку.

ReadWriteLock  lock = new ReentrantReadWriteLock();

Затем я передаю этот объект в метод, использующий интерфейс блокировки.

method(Lock lock)

внутри метода я просто делаю следующее.

final ReentrantReadWriteLock currentLock = (ReentrantReadWriteLock) lock;

1 ответ

Решение

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

Другие вопросы по тегам