以下代码发布已生成
ConcurrentModificationException
,
newMR
确保不会在循环中修改,
mkrs
线程在并发环境中不安全。众所周知
List.addAll
由执行
System.arraycopy
这是JVM中的固有方法。是否穿越
List
生成者
列表.addall
生产
当前修改例外
在Java中?
ArrayList<Foo> mkrs = mrm.getFooPush();
ArrayList<Foo> newMR = new ArrayList<Foo>(mkrs.size());
newMR.addAll(mkrs);
for (Foo mkr : newMR) {
if (mkr != null && mkr instanceof PushRecommend) {
PushRecommend pr = (PushRecommend) mkr;
recommendList.add(new MayKnowMessage(pr));
}
}
发布在Android机器上发生的异常堆栈跟踪。注意
(ProGuard:433)
这条线在哪
for (Foo mkr : newMR)
书面的。
java.util.ConcurrentModificationException:
java.util.ArrayList$Itr.next(ArrayList.java:837)
NewFriendManager.void loadNewFriendMsg(boolean)(ProGuard:433)
NewFriendManager.void reloadNewFriendMsg()(ProGuard:308)
NewFriendManager.boolean handleMessage(android.os.Message)(ProGuard:144)
android.os.Handler.dispatchMessage(Handler.java:106)
android.os.Looper.loop(Looper.java:232)
android.os.HandlerThread.run(HandlerThread.java:61)