У меня lock:Quasar ReenterantReadWriteLock не могут быть приобретены
private ReentrantReadWriteLock requestWaitingLock;
И я выполнения этого блока внутри Fiber
:
System.out.println(requestWaitingLock.isWriteLocked());
System.out.println(requestWaitingLock.getReadHoldCount());
requestWaitingLock.writeLock().lock();
System.out.println("write lock acquired");
И это потому, что в документации говорится :
общественный аннулируются замок()
приобретает блокировку записи, если Нейт блокировка чтения и записи удерживается другой цепочкой и немедленно возвращается, устанавливая значение удержания блокировки записи на единицу.
Если текущая цепочка уже содержит блокировку записи, тогда счетчик удержания увеличивается на единицу, и метод немедленно возвращается.
Если блокировка удерживается другой цепью, то текущая цепочка становится отключенной для целей планирования строк и находится в состоянии покоя до тех пор, пока не будет зафиксирована блокировка записи, и в это время счетчик блокировки записи будет установлен на один.
Так я получаю этот выход:
false
0
Это означает, что ни читать, ни писать замок проводится любым Strand
вообще. Итак, почему мой Fiber
заблокирован?
EDIT. Я уверен, что каждое волокно, которое приобретает этот замок, освободит его, поэтому невозможно, чтобы другие волокна приобретали его бесконечно.