Sobes.tech
Middle

Jaké jsou další způsoby boje s race podmínkami vláken kromě použití klíčového slova volatile?

sobes.tech AI

Odpověď od AI

Mutexy (zámky ve synchronizovaných blocích nebo funkcích, API Lock), atomické proměnné (AtomicInteger, AtomicBoolean atd.), semafory, monitory, kanály (pro přenos dat mezi vlákny) a použití datových struktur bezpečných pro paralelní přístup (například ConcurrentHashMap, CopyOnWriteArrayList).

// Příklad s blokem synchronized
private final Object lock = new Object();
private int count = 0;

public void increment() {
    synchronized (lock) {
        count++;
    }
}
// Příklad s AtomicInteger
private final java.util.concurrent.atomic.AtomicInteger atomicCount = new java.util.concurrent.atomic.AtomicInteger(0);

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