Sobes.tech
Junior — Middle

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.