OVH Cloud OVH Cloud

Utilisation des ConcurrentHashMap

2 réponses
Avatar
Kupee
Salut, Java 1.5 a introduit des classes telles que la
ConcurrentHashMap, qui semble pouvoir remplacer une
Collections.synchronizedMap(new HashMap()) a merveille,
mais ca me fait un peu peur, y a t'il des précautions a prendre,
des différences de comportement a attendre ?
merci

2 réponses

Avatar
TestMan
Bonjour,

Je dirais :
- c'est compatible multi-fils
- c'est plus lent que le HashMap tout court( à vérifier )

Sinon, celà serait interessant de tester les différences de performance
entre un Hashtable et un syncrhonized HashMap ! Un volontaire ? ;-)

A+

TM

Salut, Java 1.5 a introduit des classes telles que la
ConcurrentHashMap, qui semble pouvoir remplacer une
Collections.synchronizedMap(new HashMap()) a merveille,
mais ca me fait un peu peur, y a t'il des précautions a prendre,
des différences de comportement a attendre ?
merci


Avatar
Mike Baroukh
Bonjour.

J'ai fait il y a quelques temps des tests comparatifs et
1/ La différence avec Hashmap n'est pas évidente.
2/ C'est effectivment un peu plus rapide qu'une hashmap sychronisée.
(désolé, je ne peux pas etre plus précis).

L'explication de ces deux points, si j'ai bien compris, est que les
données sont découpés en un certain nombre de blocs (16 je crois) et que
la synchronisation est par bloc. Ainsi, 2 get/put portant sur des blocs
différents ne seront pas synchronisés.

Pour info, j'ai utilisé les ConcurrentHashMap car j'avais des bugs sous
charges élevées, des bouts de code de HashMap tournaient en rond (sur de
la lecture) sans jamais rendre la main parce qu'un autre thread avait
mis à jour la map.

bref, j'utilise à présent systématiquement les ConcurrentHashMap en lieu
et place des HashMap.


Bonjour,

Je dirais :
- c'est compatible multi-fils
- c'est plus lent que le HashMap tout court( à vérifier )

Sinon, celà serait interessant de tester les différences de performance
entre un Hashtable et un syncrhonized HashMap ! Un volontaire ? ;-)

A+

TM

Salut, Java 1.5 a introduit des classes telles que la
ConcurrentHashMap, qui semble pouvoir remplacer une
Collections.synchronizedMap(new HashMap()) a merveille,
mais ca me fait un peu peur, y a t'il des précautions a prendre,
des différences de comportement a attendre ?
merci