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.