Sobes.tech
Junior — Middle

AtomicInteger sinifinin iş mexanizmini və çox iplikli təhlükəsiz əməliyyatların həyata keçirilməsindəki rolunu izah edin

sobes.tech Süni İntellekt

AI-dan cavab

java.util.concurrent.atomic paketindən AtomicInteger sinfi, atomik şəkildə yerinə yetirilən tam ədəd dəyərini təmin edir, yəni bölünməz və çox ipli mühitdə yarış vəziyyəti riskindən azaddır.

İş prinsipi aşağı səviyyəli hardware əmrlərindən (məsələn, CAS — compare-and-swap) istifadə etməyə əsaslanır, bu da dəyər dəyişiklik əməliyyatlarının fasiləsiz və iplar arasında münaqişəsiz baş verməsini təmin edir.

AtomicInteger-in rolu, sinxronlaşdırılmış bloklar və ya açıq kilidlər istifadə etmədən, artım, azalma, təyin etmə və müqayisə əməliyyatlarını ip təhlükəsiz şəkildə təmin etməkdir, bu da performansı artırır və kodu sadələşdirir.

İstifadə nümunəsi:

import java.util.concurrent.atomic.AtomicInteger;

public class Counter {
    private AtomicInteger count = new AtomicInteger(0);

    public void increment() {
        count.incrementAndGet(); // atomik artım
    }

    public int getCount() {
        return count.get();
    }
}

Bu nümunədə, bir neçə ip increment()-i təhlükəsiz şəkildə çağıra bilər, bu da sayğacın yeniləmələrini itirmək riskini aradan qaldırır.