Встречается на собеседованиях • сегодня
Что такое Livelock в Java
Livelock — это ситуация, когда потоки активно выполняют работу, но не могут прогрессировать из-за взаимных блокировок, вызванных логикой взаимодействия. В отличие от deadlock, потоки не заблокированы, а бесконечно реагируют на действия друг друга.
Пример:
Два потока пытаются передать ресурс друг другу, но из-за условий всегда отказываются и повторяют попытки:
java
class Resource {
boolean isTransferred = false;
}
Thread t1 = new Thread(() -> {
while (!resource.isTransferred) {
System.out.println("T1 ждёт передачи...");
Thread.sleep(100); // Имитация работы
}
});
Thread t2 = new Thread(() -> {
while (resource.isTransferred) {
System.out.println("T2 ждёт передачи...");
Thread.sleep(100); // Имитация работы
}
});
t1.start();
t2.start();Здесь потоки зависают в вечном цикле, реагируя на изменение флага, но никогда не завершаются. Решение — пересмотреть логику синхронизации или использовать таймауты.

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