我有一个Android多线程应用程序。
有一定的概率会出现两个或更多的触发器运行相同的代码部分。
我有一个对象列表。
我让它通过Collections.synchronizedList
进行同步。
private List<WmGroupItemSample> mGroupItemSampleList;
mGroupItemSampleList = new ArrayList<WmGroupItemSample>();
mGroupItemSampleList = Collections.synchronizedList(mGroupItemSampleList);
然而,有时候我会在某一行上遇到异常:
Collections.sort(mGroupItemSampleList, new GroupItemSampleComparator());
java.util.ConcurrentModificationException
at java.util.AbstractList$SimpleListIterator.next(AbstractList.java:62)
at java.util.Collections.sort(Collections.java:1895)
- 这个流程是否合法?
- 我是否需要创建副本并在副本上运行排序?
Collections.synchronizedList
为什么不能防止这个异常?
[编辑]
GroupItemSampleComparator
public class GroupItemSampleComparator implements java.util.Comparator<WmGroupItemSample> {
public GroupItemSampleComparator() {
super();
}
public int compare(WmGroupItemSample s1, WmGroupItemSample s2) {
return ( (s2.getStartDate() - s1.getStartDate()) > 0 ) ? (-1) : (1);
}
}
谢谢,