Below code gives when I run the below code multiple time ConcurrentModificationException.
When I use non concurrentHashMap it is working fine.
    public static void main(String[] args) {
        Map<String, String> stringSyncedMap = Collections.synchronizedMap(new HashMap<String, String>());
        CollectionJob collectionJob1 = new CollectionJob(stringSyncedMap, "read");
        CollectionJob collectionJob2 = new CollectionJob(stringSyncedMap, "write");
        Thread thread1 = new Thread(collectionJob1, "T1");
        Thread thread2 = new Thread(collectionJob2, "T2");
        thread1.start();
        thread2.start();
    }
}
public class CollectionJob implements Runnable {
    private Map<String, String> stringCollection;
    private String operation;
    public CollectionJob(Map<String, String> stringCollection, String operation) {
        this.stringCollection = stringCollection;
        this.operation = operation;
    }
    public void run() {
        if (operation.equals("read"))
            readFromCollection();
        else
            writeToCollection();
        System.out.println("done");
    }
    public void writeToCollection() {
        for (int i = 10; i < 20; i++) {
            stringCollection.put("String " + i, "String"+i);
    }
    public void readFromCollection() {
        for (String str : stringCollection.keySet()) 
            System.out.println(str);
    }
}
What I am missing.
 
     
    