En Java, ConcurrentHashMap
est là pour une meilleure solution multithreading
. Alors, quand devrais-je utiliser ConcurrentSkipListMap
? Est-ce une redondance?
Est-ce que les aspects multithreading entre ces deux sont communs?
En Java, ConcurrentHashMap
est là pour une meilleure solution multithreading
. Alors, quand devrais-je utiliser ConcurrentSkipListMap
? Est-ce une redondance?
Est-ce que les aspects multithreading entre ces deux sont communs?
Ces deux classes varient de quelques façons.
ConcurrentHashMap ne garantit pas* l'exécution de ses activités dans le cadre de son contrat. Il permet également le réglage de certains facteurs de charge (en gros, le nombre de threads simultanément le modifier).
ConcurrentSkipListMap, d'autre part, des garanties moyenne de O(log(n)) performances sur une grande variété d'opérations. Il ne supporte pas de réglage à la simultanéité du saké. ConcurrentSkipListMap
a également un certain nombre d'opérations que l' ConcurrentHashMap
n'est pas: ceilingEntry/Clé, floorEntry/Clé, etc. Elle dispose également d'un ordre de tri, qui devraient autrement être calculé (à la notable de la charge) si vous utilisez un ConcurrentHashMap
.
Fondamentalement, les différentes implémentations sont fournis pour les différents cas d'utilisation. Si vous avez besoin rapidement d'seule paire clé/valeur plus rapide et unique clé de recherche, utilisez l' HashMap
. Si vous avez besoin plus rapidement dans l'ordre de la traversée, et qui peuvent se permettre le coût supplémentaire pour l'insertion, l'utilisation de l' SkipListMap
.
*Si je m'attends à la mise en œuvre est à peu près en ligne avec le général de hachage carte des garanties de O(1) insertion de recherche; les ignorer re-hachage
Voir Skip List pour une définition de la structure de données. ConcurrentSkipListMap stocke la carte dans l'ordre naturel de ses clés (ou dans un autre ordre de clés que vous définissez). Donc, il aura des opérations get / put / contient plus lentes qu'un HashMap, mais pour compenser cela, il supporte les interfaces SortedMap et NavigableMap.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.