Sobes.tech
Middle

Aké sú ďalšie spôsoby boja s pretekmi vlákien okrem použitia kľúčového slova volatile?

sobes.tech AI

Odpoveď od AI

Mutexy (zámky v synchronizovaných blokoch alebo funkciách, API Lock), atomické premenné (AtomicInteger, AtomicBoolean atď.), semafory, monitory, kanály (pre prenos dát medzi vláknami) a použitie dátových štruktúr bezpečných pre paralelný prístup (napríklad, ConcurrentHashMap, CopyOnWriteArrayList).

// Príklad so synchronizovaným blokom
private final Object lock = new Object();
private int count = 0;

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

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