Middle
volatile açar sözündən başqa, iş parçaları arasında yarışma vəziyyətini necə həll etmək olar?
sobes.tech Süni İntellekt
AI-dan cavab
Mutexlər (synchronizasiya olunmuş bloklar və ya funksiyalar, Lock API), atomik dəyişənlər (AtomicInteger, AtomicBoolean və s.), semaforlar, monitorlar, kanallar (iplar arasında məlumat ötürülməsi üçün), və paralel giriş üçün təhlükəsiz məlumat strukturlarının istifadəsi (məsələn, ConcurrentHashMap, CopyOnWriteArrayList).
// synchronized blok nümunəsi
private final Object lock = new Object();
private int count = 0;
public void increment() {
synchronized (lock) {
count++;
}
}
// AtomicInteger nümunəsi
private final java.util.concurrent.atomic.AtomicInteger atomicCount = new java.util.concurrent.atomic.AtomicInteger(0);
public void incrementAtomic() {
atomicCount.incrementAndGet();
}