Назад к вопросам
Middle
66
questionbank
Каковы другие способы борьбы с гонкой потоков, кроме использования ключевого слова volatile?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Мьютексы (synchronized блоки или функции, Lock API), атомарные переменные (AtomicInteger, AtomicBoolean и т.д.), семафоры, мониторы, каналы (для передачи данных между потоками), и использование структур данных, безопасных для параллельного доступа (например, ConcurrentHashMap, CopyOnWriteArrayList).
// Пример с synchronized блоком
private final Object lock = new Object();
private int count = 0;
public void increment() {
synchronized (lock) {
count++;
}
}
// Пример с AtominInteger
private final java.util.concurrent.atomic.AtomicInteger atomicCount = new java.util.concurrent.atomic.AtomicInteger(0);
public void incrementAtomic() {
atomicCount.incrementAndGet();
}