java - ConcurrentModificationException and a HashMap -
i using persisting objects using jpa. main object has owning one-many relationship object. other object stored in hashmap. sort of synchronisation fix problem? seems happen @ random times , unpredictable. here exception get:
exception in thread "pool-1-thread-1" java.util.concurrentmodificationexception @ java.util.hashmap$hashiterator.nextentry(unknown source) @ java.util.hashmap$valueiterator.next(unknown source) @ org.hibernate.collection.abstractpersistentcollection$iteratorproxy.next(abstractpersistentcollection.java:555) @ org.hibernate.engine.cascade.cascadecollectionelements(cascade.java:296) @ org.hibernate.engine.cascade.cascadecollection(cascade.java:242) @ org.hibernate.engine.cascade.cascadeassociation(cascade.java:219) @ org.hibernate.engine.cascade.cascadeproperty(cascade.java:169) @ org.hibernate.engine.cascade.cascade(cascade.java:130)
this not synchronization problem. occur if underlying collection being iterated on modified other iterator itself.
iterator = map.entryset().iterator(); while (it.hasnext()) { entry item = it.next(); map.remove(item.getkey()); }
this throw concurrentmodificationexception when it.hasnext() called second time.
the correct approach
iterator = map.entryset().iterator(); while (it.hasnext()) { entry item = it.next(); it.remove(); }
assuming iterator supports remove() operation.
Comments
Post a Comment