[英]How to trace which HashMap throws ConcurrentModificationException
In my application I have several HashMaps. 在我的应用程序中,我有几个HashMaps。 One of them do throw ConcurrentModificationException every now and then.
其中之一确实不时抛出ConcurrentModificationException。 Problem is that I do not know how to trace which Map actually throws it, and when the ConcurrentModification happens.
问题是我不知道如何跟踪实际上哪个Map抛出了Map,以及何时发生ConcurrentModification。 The stack trace does not show any line numbers to where it happens.
堆栈跟踪不会显示任何行号。 The begin of the stack trace looks liks this:
堆栈跟踪的开始看起来像这样:
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:806)
at java.util.HashMap$ValueIterator.next(HashMap.java:838)
at com.parse.ParseTraverser.traverseInternal(ParseTraverser.java:87)
at com.parse.ParseTraverser.traverse(ParseTraverser.java:137)
at com.parse.ParseObject.collectFetchedObjects(ParseObject.java:817)
at com.parse.ParseObject.access$700(ParseObject.java:49)
at com.parse.ParseObject$13.then(ParseObject.java:1487)
at com.parse.ParseObject$13.then(ParseObject.java:1484)
at bolts.Task$15.run(Task.java:917)
at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
at bolts.Task.completeAfterTask(Task.java:908)
at bolts.Task.continueWithTask(Task.java:715)
如果您不能评估通过两个操作同时修改了哪个HashMap
(经典示例是循环中的删除),则可以始终使用ConcurrentHashMap
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.