Sobes.tech
Middle

Jakie są inne sposoby radzenia sobie z wyścigiem wątków oprócz użycia słowa kluczowego volatile?

sobes.tech AI

Odpowiedź od AI

Muteksy (zablokowane sekcje lub funkcje synchronizujące, API Lock), zmienne atomowe (AtomicInteger, AtomicBoolean itp.), semafory, monitory, kanały (do przesyłania danych między wątkami) oraz użycie struktur danych bezpiecznych dla równoczesnego dostępu (np. ConcurrentHashMap, CopyOnWriteArrayList).

// Przykład z blokiem synchronized
private final Object lock = new Object();
private int count = 0;

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

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