Sobes.tech
Junior — Middle

Explicați mecanismul de funcționare al clasei AtomicInteger și rolul său în implementarea operațiilor sigure pentru fire de execuție

sobes.tech AI

Răspuns de la AI

Clasa AtomicInteger din pachetul java.util.concurrent.atomic oferă o valoare întreagă a cărei operații sunt efectuate atomic, adică indivizibile și fără riscul de condiții de cursă într-un mediu multi-thread.

Mecanismul de funcționare se bazează pe utilizarea instrucțiunilor hardware de nivel inferior (de exemplu, CAS — compare-and-swap), care garantează că operațiile de modificare a valorii se întâmplă fără întreruperi și fără conflicte între fire.

Rolul AtomicInteger este de a asigura operații thread-safe de incrementare, decrementare, setare și comparare fără a fi nevoie să folosiți blocuri sincronizate sau blocări explicite, ceea ce îmbunătățește performanța și simplifică codul.

Exemplu de utilizare:

import java.util.concurrent.atomic.AtomicInteger;

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

    public void increment() {
        count.incrementAndGet(); // increment atomic
    }

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

În acest exemplu, mai multe fire pot apela increment() în mod sigur fără riscul de a pierde actualizări ale contorului.