Предположим, что поток получает реентер-блокировку на ресурсе несколько раз и умирает. Что будет с ресурсом? Может ли другой клиент получить доступ к ресурсу?Что произойдет, если поток получит 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
Смежные вопросы
- 1. Что произойдет, если переменная не получит значение?
- 2. AppStore, что произойдет, если ваше приложение получит одобрение?
- 3. Какой поток получит замок?
- 4. Что произойдет, если входной поток отправлен в выходной поток?
- 5. Что произойдет, если поток в критической секции затухает?
- 6. Что произойдет, если action = ""?
- 7. Что произойдет, если я создам поток в asp.net?
- 8. Что произойдет, если поток выбрасывает исключение внутри синхронизированного блока
- 9. Что произойдет, если поток сбой, который лучше нить или процесс?
- 10. Что произойдет, если приложение закрыто, когда поток ThreadPool записывает файл?
- 11. Что произойдет, если один поток OpenMP завершится с ошибкой?
- 12. Что произойдет, если один поток выйдет из строя в процессе?
- 13. Что произойдет, если MySQL получит такой же запрос UPDATE в одно и то же время?
- 14. Что произойдет, если клиент отключится?
- 15. Что произойдет, если ViewState Disabled
- 16. Что произойдет, если stdin заполняется?
- 17. Что произойдет, если NSURLCache заполнен?
- 18. Что произойдет, если php.ini отсутствует?
- 19. Что произойдет, если отключить таймер?
- 20. Что произойдет, если * .exe.config удален?
- 21. Что произойдет, если дешифратор не будет запущен
- 22. Замков в Java классе
- 23. Экран GNU при запуске в режиме демона, что произойдет, если он получит SIGTERM:
- 24. Что произойдет, если scanf() получит некоторый символ, который не соответствует строке формата?
- 25. Что произойдет, если загрузка процессора будет высокой?
- 26. Что произойдет, если основной поток занят, когда рабочий поток отправляет сообщение?
- 27. PayPal AdaptivePayment: что произойдет, если вторичный получатель не получит наличные деньги при обработке API возврата
- 28. Кто получит ответ от сервера, если вызывающий поток неактивен?
- 29. Что произойдет, если неверный адрес предварительно выбран?
- 30. Что произойдет, если Runnable выполняется несколько раз в ExecutorService
Вы можете показать свой пример кода, который вы использовали для тестирования это и разъяснить нам, что вызывает путаницу? –
Из любопытства я задал это сомнение. Поскольку блокировки в java поддерживают блокировку holdCount и освобождают блокировку после того, как holdCount достигнет нуля. –
Это легко проверить: 'public void run() {sharedLock.lock(); вернуть; } ' –