Wyjaśnij mechanizm działania klasy AtomicInteger i jej rolę w implementacji operacji bezpiecznych dla wątków.
sobes.tech AI
Odpowiedź od AI
Klasa AtomicInteger z pakietu java.util.concurrent.atomic zapewnia wartość całkowitą, na której operacje są wykonywane atomowo, czyli niepodzielnie i bez ryzyka warunków wyścigu w środowisku wielowątkowym.
Mechanizm działania opiera się na użyciu instrukcji niskiego poziomu sprzętu (np. CAS — compare-and-swap), które gwarantują, że operacje zmiany wartości odbywają się bez przerw i konfliktów między wątkami.
Rola AtomicInteger polega na zapewnieniu bezpiecznych dla wątków operacji inkrementacji, dekrementacji, ustawiania i porównywania bez konieczności używania zablokowanych bloków lub jawnych blokad, co zwiększa wydajność i upraszcza kod.
Przykład użycia:
import java.util.concurrent.atomic.AtomicInteger;
public class Counter {
private AtomicInteger count = new AtomicInteger(0);
public void increment() {
count.incrementAndGet(); // atomowe zwiększenie
}
public int getCount() {
return count.get();
}
}
W tym przykładzie, kilka wątków może bezpiecznie wywoływać increment() bez ryzyka utraty aktualizacji licznika.