猿问

多线程修改了ArrayList , 如何知道被谁修改的?

public void method(){
    ...    for(Object obj: finalObjects){
        ....
        doSth(obj);
        ....
    }
}

我在主线程遍历 ArrayList 的时候,发生了 java.util.ConcurrentModificationException

已检查 doSth 并没有修改 全局变量 finalObjects,所以我怀疑是某个异步方法在我遍历期间修改了这个变量,由于系统庞大,没法直接查找哪里修改了它,有没有办法在运行时获取,是哪个地方的异步,或者是哪个线程,修改了 finalObjects导致异常发生?

请教各位大佬 ,谢谢 !!


神不在的星期二
浏览 485回答 1
1回答

月关宝盒

很感谢各位的回答。只是解决这个问题,如@kevinz 那样,就可以了。但是我的目的是想跟踪这个变量在这一段代码执行过程中,还有哪个线程修改了它。不过看来是很困难,我是一点头绪都没有。
随时随地看视频慕课网APP

相关分类

Java
我要回答