Встречается на собеседованиях • сегодня
Какие знаешь способы решения Deadlock
Deadlock возникает, когда потоки блокируют друг друга, ожидая ресурсы. Основные способы решения:
- Избегание циклических ожиданий – зафиксировать порядок блокировки ресурсов. Например, всегда сначала блокировать
ResourceA, затемResourceB:
java
synchronized(resourceA) {
synchronized(resourceB) {
// работа с ресурсами
}
}- Timeout на блокировках – использовать
tryLock()с таймаутом:
java
if (lock1.tryLock(100, TimeUnit.MILLISECONDS)) {
try {
if (lock2.tryLock(100, TimeUnit.MILLISECONDS)) {
// работа с ресурсами
}
} finally {
lock2.unlock();
}
}-
Разрушение deadlock'а – через
ThreadMXBeanможно детектить и прерывать deadlock'и. -
Отказ от вложенных блокировок – перепроектировать код, чтобы не требовалось удерживать несколько блокировок одновременно.
-
Использование concurrent структур – например,
ConcurrentHashMapвместоsynchronizedблоков.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы