你好!
两个运行环境不同,是造成代码运行不同的主要原因。
左图应为jdk1.7或以下版本,右图为jdk1.8。
ConcurrentModificationException:当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。
产生的原因:
迭代器是依赖于集合而存在的,在判断成功后,集合的中新添加了元素,而迭代器却不知道,所以就报错了,这个错叫并发修改异常。
简单描述就是:迭代器遍历元素的时候,通过集合是不能修改元素的。
jdk1.8中解决了之前HashMap扩容引发的线程不安全,但它仍然属于非线程安全的。
将HashMap替换为ConcurrentHashMap,可以解决环境问题所引起的问题。
希望对你有帮助!
追问大神啊,左图是2015年的代码,右图是我今天(2019年)写的代码,我就怀疑2019年和2015年的代码会有不同,又不知道在哪里看,不敢确定
追答找到原因,解决问题就好。