Middle
Kokie kiti būdai yra kovoti su sriegių lenktynėmis, išskyrus naudojimą volatile raktažodžio?
sobes.tech AI
Atsakymas iš AI
MUTEX'ai (sinchronizuotos blokai arba funkcijos, Lock API), atominės kintamosios (AtomicInteger, AtomicBoolean ir kt.), semaforai, monitoriai, kanalai (duomenų perdavimui tarp sriečių), ir naudojimas duomenų struktūrų, saugių paraleliai prieigai (pvz., ConcurrentHashMap, CopyOnWriteArrayList).
// Pavyzdys su sinchronizuotu bloku
private final Object lock = new Object();
private int count = 0;
public void increment() {
synchronized (lock) {
count++;
}
}
// Pavyzdys su AtomicInteger
private final java.util.concurrent.atomic.AtomicInteger atomicCount = new java.util.concurrent.atomic.AtomicInteger(0);
public void incrementAtomic() {
atomicCount.incrementAndGet();
}