Встречается на собеседованиях • сегодня
Как решить проблему DeadLock
DeadLock возникает, когда два или более потока блокируют друг друга, ожидая освобождения ресурсов. Решение:
- Упорядоченное получение блокировок – всегда захватывать блокировки в одинаковом порядке. Пример:
java
// Поток 1 и Поток 2 должны получать lockA, затем lockB
synchronized(lockA) {
synchronized(lockB) {
// Критическая секция
}
}- Использование tryLock() – с таймаутом для избежания вечного ожидания:
java
if (lock1.tryLock(100, TimeUnit.MILLISECONDS)) {
try {
if (lock2.tryLock(100, TimeUnit.MILLISECONDS)) {
try {
// Критическая секция
} finally {
lock2.unlock();
}
}
} finally {
lock1.unlock();
}
}-
Избегание вложенных блокировок – перепроектировать логику, чтобы уменьшить количество блокировок.
-
Использование высокоуровневых механизмов – например, ConcurrentHashMap или ExecutorService вместо ручной синхронизации.

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