คำถามติดแท็ก concurrentmodification

10
ทำไมฉันไม่ได้รับ java.util.ConcurrentModificationException ในตัวอย่างนี้
หมายเหตุ: ฉันตระหนักถึงIterator#remove()วิธีการ ในตัวอย่างโค้ดต่อไปนี้ฉันไม่เข้าใจว่าทำไมList.removein in mainthrows ConcurrentModificationExceptionแต่ไม่ได้อยู่ในremovemethod public class RemoveListElementDemo { private static final List<Integer> integerList; static { integerList = new ArrayList<Integer>(); integerList.add(1); integerList.add(2); integerList.add(3); } public static void remove(Integer toRemove) { for(Integer integer : integerList) { if(integer.equals(toRemove)) { integerList.remove(integer); } } } public static void main(String... args) { remove(Integer.valueOf(2)); Integer …

8
เหตุใด ConcurrentModificationException จึงถูกโยนทิ้งและวิธีการดีบัก
ฉันกำลังใช้ a Collection( HashMapใช้ทางอ้อมโดย JPA มันก็เกิดขึ้น) แต่ดูเหมือนจะสุ่มรหัสพ่น a ConcurrentModificationException. สาเหตุเกิดจากอะไรและจะแก้ไขปัญหานี้ได้อย่างไร โดยใช้การซิงโครไนซ์บางที? นี่คือการติดตามสแต็กแบบเต็ม: Exception in thread "pool-1-thread-1" java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextEntry(Unknown Source) at java.util.HashMap$ValueIterator.next(Unknown Source) at org.hibernate.collection.AbstractPersistentCollection$IteratorProxy.next(AbstractPersistentCollection.java:555) at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:296) at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:242) at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:219) at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169) at org.hibernate.engine.Cascade.cascade(Cascade.java:130)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.