[Java] A diferença entre HashMap e Hashtable, a diferença entre HashMap e ConcurrentHashMap

A diferença entre HashMap e Hashtable, a diferença entre HashMap e ConcurrentHashMap

A diferença entre HashMap e Hashtable

  1. Hashtable é sincronizado e possui um bloqueio sincronizado, mas HashMap não. O desempenho de objetos sem bloqueios sincronizados geralmente é melhor do que objetos com bloqueios sincronizados, portanto, se for um programa não multithread e não precisar considerar bloqueios, sincronização e outros problemas, é melhor usar o HashMap.
  2. Hashtable não permite chaves ou valores vazios. HashMap permite chaves e valores vazios.
  3. HashMap possui uma subclasse LinkedHashMap. Ao iterar objetos desta classe, sua ordem é ordenada (classificada em ordem de inserção). Se necessário, você pode converter facilmente de LinkedHashMap para HashMap. Hashtable não é tão simples,

Resumindo, se você não precisa se preocupar com problemas de sincronização, recomendo usar o HashMap. Em vez disso, você pode considerar usar ConcurrentHashMap

A diferença entre HashMap e ConcurrentHashMap

  1. HashMap não é thread-safe, mas ConcurrentHashMap é thread-safe.
  2. ConcurrentHashMap usa tecnologia de segmentação de bloqueio para segmentar todo o balde Hash, ou seja, esse grande array é dividido em vários segmentos pequenos, e cada segmento pequeno possui um bloqueio, portanto, ao inserir elementos Ao inserir, você precisa primeiro descobrir qual segmento deve ser inserido e, em seguida, inserir neste segmento, e você também precisa obter o bloqueio de segmento aqui.
    3. ConcurrentHashMap torna a granularidade do bloqueio mais refinada e o desempenho da simultaneidade melhor.

Se houver algum erro, por favor me avise!
Ao reimprimir ou citar o conteúdo deste artigo, indique a fonte e o autor original: Juzu Qingzhong;

おすすめ

転載: blog.csdn.net/weixin_44510587/article/details/129259276