Chyba - synchronizovat "neúplně"

public class SomeThreadSafeClass {
 
    private List<String> data = Collections.synchronizedList(new ArrayList<String>());
 
    public void addData(String newObject) {
        data.add(newObject);
    }
 
    public synchronized void dumpData() {
        for(String s : data) {
            System.out.println(s);
        }
    }
 
}
[Poznámka] Poznámka

Chybou je synchronizovat jen dumpData a ne addData, protože takto během iterace v dumpData klidně proběhne (nevyloučené) vložení do kolekce data a ta se při iteraci stane nekonzistentní.