Встречается на собеседованиях • сегодня
Как можно решить проблему Livelock
Livelock возникает, когда потоки активно работают, но не продвигаются из-за взаимных блокировок. В отличие от deadlock, потоки не заблокированы, а бесконечно реагируют на действия друг друга.
Пример:
Два потока пытаются пропустить друг друга через дверь, но оба одновременно отступают, создавая цикл.
Решение:
- Random backoff – добавление случайной задержки перед повторной попыткой:
java
while (!tryLock()) {
Thread.sleep((long) (Math.random() * 100)); // Случайная пауза
}- Приоритеты – задать порядок блокировок (например, по ID потока).
- Timeout – ограничить время попыток:
java
if (lock.tryLock(500, TimeUnit.MILLISECONDS)) { ... }- Отказ от повторной попытки – переключиться на другую задачу.
Ключ – разорвать цикл взаимных реакций через задержки, приоритеты или отказы.

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