Sobes.tech
Назад к вопросам
Junior — Middle
65

Какими методами можно предотвратить состояние гонки в многопоточной среде?

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

sobes.tech AI

Чтобы предотвратить состояние гонки (race condition) в многопоточной среде, используют следующие методы:

  • Синхронизация (synchronized) — блокировка критических секций кода, чтобы только один поток мог выполнять их одновременно.
  • Использование классов из java.util.concurrent — например, ReentrantLock, AtomicInteger, ConcurrentHashMap.
  • Избегание общего состояния — проектирование потокобезопасных структур данных или использование неизменяемых объектов.
  • Использование volatile — для обеспечения видимости изменений переменных между потоками.

Пример с synchronized:

public class Counter {
    private int count = 0;

    public synchronized void increment() {
        count++;
    }

    public synchronized int getCount() {
        return count;
    }
}

Здесь методы increment и getCount синхронизированы, чтобы избежать одновременного доступа и состояния гонки.