ExpertiDict

Java · Intermediário · Inglês · Técnico

ConcurrentHashMap

/kənˈkʌrənt hæʃ mæp/substantivo

Mapa thread-safe e de alto desempenho, com leituras sem bloqueio, escritas em partes separadas e operações atômicas como computeIfAbsent e merge.

Onde usar

Aparece em caches e contadores compartilhados entre threads. Em review: 'HashMap num singleton é bug de concorrência'.

Em código

ConcurrentMap<String, Integer> m =
    new ConcurrentHashMap<>();
m.merge("acessos", 1, Integer::sum);
m.computeIfAbsent("x", k -> 0);
// m.put(null, 1) lança NPE

Exemplos

Swap the HashMap for a ConcurrentHashMap in the cache.

Troque o HashMap por um ConcurrentHashMap no cache.

Use merge instead of get followed by put.

Use merge em vez de get seguido de put.

Cuidado

Não aceita chave nem valor null, e operações compostas fora dos métodos atômicos (get e depois put) continuam com race condition.

Veja também

Todos os termos de Java