If you program systems with Java, you have probably long been using ConcurrentHashMap. This post explores a caveat. ConcurrentHashMap is often introduced to simplify code and application logic. For example: HashMap<String, MyClass> m = new HashMap<String, MyClass>(); ... synchronized (m) { for each (Entry<String, MyClass> e in m.entrySet()) system.out.println(e.getKey()+"="+e.getValue()); } might