Qu'est-ce qui ne va pas avec HashMap dans un environnement multithread ? … C'est un problème si plusieurs threads s'ajoutent à la même instance HashMap sans qu'elle soit synchronisée. Même si un seul thread modifie un HashMap et que d'autres threads lisent à partir de cette même carte sans synchronisation, vous rencontrerez des problèmes.
Pouvez-vous utiliser un HashMap dans un environnement multithread ?
Vous devez vous assurer que: toutes les mises à jour de la HashMap sont terminées avant que les threads ne soient instanciés et que le thread qui crée la carte bifurque également les threads. Les threads n'utilisent que HashMap en mode lecture seule - soit get, soit itération sans suppression. Il n'y a pas de threads mettant à jour la carte.
Pourquoi HashMap ne doit pas être utilisé dans un environnement multithread, peut-il également provoquer une boucle infinie ?
La capacité par défaut de HashMap est de 16 et le facteur de charge est de 0,75, ce qui signifie que HashMap doublera sa capacité lorsque la 12e paire clé-valeur entrera dans la carte (160,75=12). Lorsque 2 threads tentent d'accéder simultanément à HashMap, vous pouvez alors rencontrer une boucle infinie. Thread 1 et Thread 2 essaient de mettre la 12ème paire clé-valeur.
HashMap est-il sécurisé pour les threads ?
HashMap n'est pas synchronisé. Il n'est pas thread-safe et ne peut pas être partagé entre plusieurs threads sans code de synchronisation approprié alors que Hashtable est synchronisé.
Ce qui convient le mieux au multithreadenvironnement ?
La réponse est "ConcurrentHashMap"