Встречается на собеседованиях • сегодня
Какие знаешь методы борьбы с Deadlock
Основные методы предотвращения deadlock:
- Упорядоченное получение блокировок - всегда захватывать ресурсы в одном порядке. Например:
java
// Всегда сначала lock1, потом lock2
synchronized(lock1) {
synchronized(lock2) {
// critical section
}
}- Использование tryLock() - с таймаутом для избежания бесконечного ожидания:
java
if (lock1.tryLock(100, TimeUnit.MILLISECONDS)) {
try {
if (lock2.tryLock(100, TimeUnit.MILLISECONDS)) {
// critical section
}
} finally {
lock2.unlock();
}
}- Разрушение условий deadlock:
- Отказаться от взаимной блокировки (необходимость и достаточность)
- Ввести приоритеты потоков
- Использовать атомарные операции вместо блокировок
- Обнаружение deadlock - мониторинг через JMX или ThreadMXBean.
Лучшая практика - проектировать систему так, чтобы минимизировать необходимость в блокировках.

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