jeudi 29 mai 2014

ConcurrentHashMap et LongAdder

Le sujet du jour est de réaliser un petit filtre de Servlet pour stocker le nombre d'appels pour chaque url.

Pour réaliser cela, il suffit de lire la javadoc de ConcurrentHashMap et plus particulièrement :
A ConcurrentHashMap can be used as scalable frequency map (a form of histogram or multiset) by using LongAdder values and initializing via computeIfAbsent. For example, to add a count to a ConcurrentHashMap<String,LongAdder> freqs, you can use freqs.computeIfAbsent(k -> new LongAdder()).increment();

L'implémentation est donc très simple :

L'affichage n'est pas plus compliqué :

On a donc une gestion de stats thread safe et performante en une ligne de code :)

0 commentaires:

Enregistrer un commentaire