Middle
Wat zijn andere manieren om te omgaan met racecondities tussen threads, naast het gebruik van het sleutelwoord volatile?
sobes.tech AI
Antwoord van AI
Mutexen (gesynchroniseerde blokken of functies, Lock API), atomaire variabelen (AtomicInteger, AtomicBoolean, enz.), semaforen, monitors, kanalen (voor gegevensoverdracht tussen threads), en het gebruik van datastructuren die veilig zijn voor gelijktijdige toegang (bijvoorbeeld ConcurrentHashMap, CopyOnWriteArrayList).
// Voorbeeld met synchronized blok
private final Object lock = new Object();
private int count = 0;
public void increment() {
synchronized (lock) {
count++;
}
}
// Voorbeeld met AtomicInteger
private final java.util.concurrent.atomic.AtomicInteger atomicCount = new java.util.concurrent.atomic.AtomicInteger(0);
public void incrementAtomic() {
atomicCount.incrementAndGet();
}