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