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