Sincronia de Collections

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 :smiley:

É. 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;
        }
    }