Встречается на собеседованиях • сегодня
Какие знаешь способы избежать Dead Lock
- Упорядоченное блокирование – всегда захватывать блокировки в одном и том же порядке. Например:
java
// Правильно
synchronized (lock1) {
synchronized (lock2) {
// Код
}
}- Использование таймаутов –
tryLock()с таймаутом вместоsynchronized:
java
if (lock1.tryLock(1, TimeUnit.SECONDS)) {
try {
if (lock2.tryLock(1, TimeUnit.SECONDS)) {
// Код
}
} finally {
lock2.unlock();
}
}-
Избегание вложенных блокировок – перепроектировать код так, чтобы не требовалось захватывать несколько блокировок одновременно.
-
Использование concurrent коллекций – например,
ConcurrentHashMapвместоsynchronizedблоков. -
Анализ зависимостей – выявлять и устранять циклические зависимости между потоками.

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