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.