Sobes.tech
Middle

Care sunt celelalte modalități de a combate condiția de cursă a firelor, în afară de utilizarea cuvântului cheie volatile?

sobes.tech AI

Răspuns de la AI

Mutex-uri (blocuri sau funcții sincronizate, API Lock), variabile atomice (AtomicInteger, AtomicBoolean etc.), semafoare, monitoare, canale (pentru transferul de date între fire de execuție) și utilizarea structurilor de date sigure pentru accesul paralel (de exemplu, ConcurrentHashMap, CopyOnWriteArrayList).

// Exemplu cu bloc synchronized
private final Object lock = new Object();
private int count = 0;

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

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