Sobes.tech
Назад к вопросам
Senior
14

Назовите проблему, которая может возникнуть в многопоточном приложении. Расскажите про Race Condition.

Компании, где спрашивали
РТЛабс

Ответ от нейросети

sobes.tech AI

Race Condition — это ситуация в многопоточном приложении, когда результат работы программы зависит от непредсказуемого порядка выполнения потоков, что приводит к ошибкам и некорректным данным.

Проблема возникает, когда несколько потоков одновременно обращаются и изменяют общие ресурсы без должной синхронизации.

Пример:

Если два потока одновременно увеличивают общий счётчик без синхронизации, итоговое значение может быть меньше ожидаемого, так как операции чтения и записи могут пересекаться.

class Counter {
    private int count = 0;

    public void increment() {
        count = count + 1; // неатомарная операция
    }

    public int getCount() {
        return count;
    }
}

Если два потока вызовут increment() одновременно, возможна потеря обновления.

Чтобы избежать Race Condition, используют механизмы синхронизации: synchronized, Lock, атомарные классы (AtomicInteger) и другие средства, обеспечивающие атомарность и видимость изменений между потоками.