Sobes.tech
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();
}