Встречается на собеседованиях • сегодня

Что такое 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();

Здесь оба потока будут бесконечно ждать завершения друг друга, но при этом активно работать. Решение — добавить случайную задержку или ограничить количество попыток.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы