Предположим, что поток получает реентер-блокировку на ресурсе несколько раз и умирает. Что будет с ресурсом? Может ли другой клиент получить доступ к ресурсу?Что произойдет, если поток получит 10 реентерабельных замков и штампов?
-1
A
ответ
0
Звучит как классический тупик для меня. Если замок не освобожден владельцем - он останется заблокированным навсегда и для всех.
2
Доказательство демонстрацией:
public static void main(String[] args) throws InterruptedException {
final ReentrantLock lock = new ReentrantLock();
final Thread t = new Thread(()->lock.lock());
t.start();
t.join();
System.out.println(t.isAlive());
System.out.println(lock.tryLock());
}
Он печатает
false
false
Вы можете показать свой пример кода, который вы использовали для тестирования это и разъяснить нам, что вызывает путаницу? –
Из любопытства я задал это сомнение. Поскольку блокировки в java поддерживают блокировку holdCount и освобождают блокировку после того, как holdCount достигнет нуля. –
Это легко проверить: 'public void run() {sharedLock.lock(); вернуть; } ' –