Sobes.tech
Middle

Quali sono gli altri modi per gestire la condizione di gara tra thread, oltre all'uso della parola chiave volatile?

sobes.tech AI

Risposta dell'AI

Mutex (blocchi o funzioni sincronizzate, API Lock), variabili atomiche (AtomicInteger, AtomicBoolean, ecc.), semafori, monitor, canali (per il trasferimento di dati tra thread), e l'uso di strutture dati sicure per l'accesso parallelo (ad esempio, ConcurrentHashMap, CopyOnWriteArrayList).

// Esempio con blocco synchronized
private final Object lock = new Object();
private int count = 0;

public void increment() {
    synchronized (lock) {
        count++;
    }
}
// Esempio con AtomicInteger
private final java.util.concurrent.atomic.AtomicInteger atomicCount = new java.util.concurrent.atomic.AtomicInteger(0);

public void incrementAtomic() {
    atomicCount.incrementAndGet();
}