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

Какие проблемы могут возникнуть при использовании многопоточности

  1. Race Condition - когда несколько потоков одновременно изменяют общие данные, результат зависит от порядка выполнения.

    java
    int counter = 0;
    // Поток 1: counter++;  
    // Поток 2: counter++;  
    // Итог может быть 1 вместо 2
  2. Deadlock - взаимная блокировка потоков, когда каждый ждёт ресурс, занятый другим.

    java
    // Поток 1: synchronized(A) { synchronized(B) { ... } }  
    // Поток 2: synchronized(B) { synchronized(A) { ... } }
  1. Livelock - потоки постоянно меняют состояние, но не прогрессируют (например, из-за "вежливой" логики retry).

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

  3. Проблемы видимости (Memory Consistency) - изменения переменной в одном потоке могут быть не видны другим из-за кеширования CPU. Решается через volatile или синхронизацию.

  4. False Sharing - снижение производительности из-за частого обновления кеша CPU, даже если потоки работают с разными данными в одной кеш-линии.

Для решения используют: synchronized, volatile, Atomic-классы, Lock, Concurrent коллекции.

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

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

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

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