Sobes.tech
Junior — Middle

Leg uit hoe de AtomicInteger-klasse werkt en wat de rol ervan is bij het implementeren van thread-safe operaties

sobes.tech AI

Antwoord van AI

De klasse AtomicInteger uit de package java.util.concurrent.atomic biedt een geheel getalwaarde waarvan de bewerkingen atomair worden uitgevoerd, dat wil zeggen ondeelbaar en zonder risico op racecondities in een multithread-omgeving.

Het werkingsmechanisme is gebaseerd op het gebruik van low-level hardware-instructies (bijvoorbeeld CAS — compare-and-swap), die garanderen dat waarde-wijzigingsoperaties zonder onderbrekingen en zonder conflicten tussen threads plaatsvinden.

De rol van AtomicInteger is het bieden van thread-safe operaties voor incrementeren, decrementeren, instellen en vergelijken zonder dat gesynchroniseerde blokken of expliciete vergrendelingen nodig zijn, wat de prestaties verbetert en de code vereenvoudigt.

Voorbeeld van gebruik:

import java.util.concurrent.atomic.AtomicInteger;

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

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

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

In dit voorbeeld kunnen meerdere threads veilig increment() aanroepen zonder het risico dat updates van de teller verloren gaan.