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