Sobes.tech
Junior — Middle

Explique le mécanisme de fonctionnement de la classe AtomicInteger et son rôle dans la mise en œuvre d'opérations thread-safe.

sobes.tech IA

Réponse de l'IA

La classe AtomicInteger du paquet java.util.concurrent.atomic fournit une valeur entière dont les opérations sont effectuées de manière atomique, c’est-à-dire indivisible et sans risque de conditions de course dans un environnement multithread.

Le mécanisme de fonctionnement repose sur l’utilisation d’instructions matérielles de bas niveau (par exemple, CAS — compare-and-swap), qui garantissent que les opérations de modification de la valeur se produisent sans interruption ni conflit entre les threads.

Le rôle de AtomicInteger est d’assurer des opérations thread-safe d’incrémentation, de décrémentation, de mise à jour et de comparaison sans avoir besoin d’utiliser des blocs synchronisés ou des verrouillages explicites, ce qui améliore la performance et simplifie le code.

Exemple d’utilisation :

import java.util.concurrent.atomic.AtomicInteger;

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

    public void increment() {
        count.incrementAndGet(); // incrément atomique
    }

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

Dans cet exemple, plusieurs threads peuvent appeler increment() en toute sécurité sans risquer de perdre des mises à jour du compteur.