Podemos usar hashmap em ambiente multithread?

Podemos usar hashmap em ambiente multithread?
Podemos usar hashmap em ambiente multithread?
Anonim

O que há de errado em usar HashMap em ambiente multithread? … É um problema se vários threads estiverem adicionando à mesma instância de HashMap sem ela ser sincronizada. Mesmo que apenas 1 thread esteja modificando um HashMap e outros threads estejam lendo desse mesmo mapa sem sincronização, você terá problemas.

Você pode usar um HashMap em um ambiente multithread?

Você deve se certificar de que: Todas as atualizações do HashMap sejam concluídas antes que os encadeamentos sejam instanciados e o encadeamento que cria o mapa também bifurque os encadeamentos. Os encadeamentos estão usando apenas o HashMap no modo somente leitura – obter ou iteração sem remover. Não há tópicos atualizando o mapa.

Por que o HashMap não deve ser usado em ambiente multithread ele pode causar um loop infinito também?

A capacidade padrão do HashMap é 16 e o fator de carga é 0,75, o que significa que o HashMap dobrará sua capacidade quando o 12º par Key-Value entrar no mapa (160,75=12). Quando 2 threads tentam acessar o HashMap simultaneamente, você pode encontrar um loop infinito. Thread 1 e Thread 2 tentam colocar o 12º par chave-valor.

O HashMap é seguro para threads?

HashMap não é sincronizado. Não é thread-safe e não pode ser compartilhado entre muitos threads sem o código de sincronização adequado, enquanto o Hashtable é sincronizado.

O que é mais adequado para multithreadambiente?

A resposta é "ConcurrentHashMap"

Recomendado: