Назад к вопросам
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 синхронизированы, чтобы избежать одновременного доступа и состояния гонки.