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

Откуда возникают проблемы при многопоточности

Проблемы многопоточности возникают из-за неконтролируемого доступа потоков к общим ресурсам. Основные проблемы:

  1. Race condition — результат зависит от порядка выполнения потоков.
    java
    int counter = 0;
    // Потоки одновременно инкрементят counter → возможны потери обновлений.
  1. Deadlock — взаимная блокировка потоков, ожидающих друг друга.

    java
    // Поток 1: synchronized(A), затем пытается захватить B
    // Поток 2: synchronized(B), затем пытается захватить A
  2. Memory visibility — изменения переменных в одном потоке могут быть не видны другим из-за кеширования CPU.
    Решается через volatile, synchronized или Atomic-классы.

  3. Livelock — потоки постоянно меняют состояние, но не прогрессируют (например, вежливые потоки, уступающие друг другу ресурс).

  4. Starvation — поток долго не получает доступ к ресурсу из-за высокого приоритета других потоков.

Решение — правильная синхронизация (synchronized, Lock, Concurrent-коллекции) и избегание общих изменяемых состояний.

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

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

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

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