Встречается на собеседованиях • сегодня
В чем разница между DeadLock и LiveLock
DeadLock - ситуация, когда потоки блокируют друг друга, ожидая ресурсы, которые никогда не освободятся. Например, Thread1 держит lockA и ждет lockB, а Thread2 держит lockB и ждет lockA.
LiveLock - потоки активно работают, но не продвигаются, постоянно "уступая" ресурсы друг другу. Пример - два потока пытаются пройти через узкий коридор, каждый отступает, чтобы пропустить другого, но в итоге оба стоят на месте.
Пример LiveLock:
java
class LiveLockExample {
static boolean polite = true;
public static void main(String[] args) {
new Thread(() -> {
while (polite) {
System.out.println("Thread1 уступает");
polite = false;
try { Thread.sleep(100); } catch (InterruptedException e) {}
}
}).start();
new Thread(() -> {
while (!polite) {
System.out.println("Thread2 уступает");
polite = true;
try { Thread.sleep(100); } catch (InterruptedException e) {}
}
}).start();
}
}Ключевое отличие: при DeadLock потоки полностью заблокированы, при LiveLock - активно выполняют бесполезную работу.

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