Comment faire un compteur Thread safe en java

Publié le 12 Octobre 2012

Le problème de jour consiste à devoir incrémenter un compteur global qui s'incrémente à chaque transaction.

Il y a bien sûr plusieurs thread qui peuvent générer des transactions simultanément, il faut donc prendre en compte tous les aspects de synchronisation.

ah oui et enfin le compteur doit boucler sur l'intervalle [0-9999].

On peut être tenter d'utiliser synchronized pour controler l'accès au compteur mais les classes Atomic permettent de s'en passer:

static final int MAX = 10000;
final AtomicInteger counter = new AtomicInteger(0);


int getAndIncrementCounter() {
    counter.compareAndSet(Integer.MAX_VALUE, Integer.MAX_VALUE % MAX)
    return counter.incrementAndGet() % MAX;

Rédigé par Bliz

Publié dans #Java

Repost0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article