Могу ли я изменить 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 обратно.