Встречается на собеседованиях • сегодня
Что такое LiveLock
Livelock — это ситуация, когда потоки или процессы постоянно меняют своё состояние в ответ на действия друг друга, но не могут продвинуться дальше. В отличие от deadlock, потоки не блокируются, а активно работают, но без полезного результата.
Пример с двумя потоками, пытающимися "вежливо" пропустить друг друга:
java
class PoliteThread extends Thread {
private final Thread other;
public PoliteThread(Thread other) {
this.other = other;
}
@Override
public void run() {
while (other.isAlive()) {
System.out.println("Пропускаю другого...");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// игнорируем
}
}
System.out.println("Завершаю работу");
}
}
// Использование:
Thread t1 = new PoliteThread(t2);
Thread t2 = new PoliteThread(t1);
t1.start();
t2.start();Здесь оба потока будут бесконечно ждать завершения друг друга, но при этом активно работать. Решение — добавить случайную задержку или ограничить количество попыток.

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