public List getAll() {
List dataList = new ArrayList();
dataList.addAll(Collections.unmodifiableCollection(dataMap.values()));
return dataList;
}
这个方法在调用的时候另一个线程增加或删除了dataMap里的值,抛出了ConcurrentModificationException:
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:1091)
at java.util.HashMap$ValueIterator.next(HashMap.java:1122)
at java.util.AbstractCollection.toArray(AbstractCollection.java:141)
at java.util.Collections$UnmodifiableCollection.toArray(Collections.java:1016)
at java.util.ArrayList.addAll(ArrayList.java:499)
at TestData.getAll(TestData.java:258)
如何解决呢?