Se só estou usando get e put de uma HashMap, que são chamados por threads diferentes, preciso sincronizar ???
A documentação não é muito clara sobre isso…
(Acredito que sim…)
Se só estou usando get e put de uma HashMap, que são chamados por threads diferentes, preciso sincronizar ???
A documentação não é muito clara sobre isso…
(Acredito que sim…)
o ideal para prevenir resultados extranhos é sincronizar sim,
o melhor é sincronizar só na instancia no momento destes acessos, não ha necessidade de utilizar uma coleção sincronizada se forem poucos pontos onde ela é utilizada por mais de uma thread
É. Olhando o código fonte do hashmap parece que é bem inseguro não sincronizar…
public V get(Object key) {
Object k = maskNull(key);
int hash = hash(k);
int i = indexFor(hash, table.length);
Entry<K,V> e = table[i];
while (true) {
if (e == null)
return null;
if (e.hash == hash && eq(k, e.key))
return e.value;
e = e.next;
}
}