Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: starvation, fairness

Что такое starvation и из-за чего она возникает?

Вопрос проверяет понимание проблем справедливости и планирования потоков.

Короткий ответ

Starvation — это ситуация, когда поток долгое время не получает доступ к ресурсам. Другие потоки постоянно его опережают. Поток формально жив, но практически не выполняется. Причина — несправедливое распределение ресурсов. Это приводит к деградации работы системы.

Длинный ответ

Starvation связана не с блокировкой, а с приоритетами и планированием.

Что такое starvation

Starvation — это состояние, при котором:

  • поток готов к выполнению

  • ресурсы постоянно заняты другими потоками

  • выполнение откладывается неопределенно долго

Основные причины

Starvation может возникать из-за:

  • высоких приоритетов других потоков

  • несправедливых lock’ов

  • частых захватов ресурса одними и теми же потоками

  • агрессивных retry-циклов

Отличие от deadlock

  • при deadlock потоки заблокированы навсегда

  • при starvation поток не заблокирован, но игнорируется

Как уменьшить риск

Практики:

  • использование fair-lock’ов

  • выравнивание приоритетов

  • ограничение времени удержания ресурсов

Вывод: starvation — это проблема справедливости, при которой поток «голодает», оставаясь формально активным.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • Java

    Java

Ключевые слова

#starvation

#fairness

Подпишись на Java Developer в телеграм