测试程序时,报java.util.ConcurrentModificationException异常。google后发现,是由于Iterator表示的哈希表变化造成的,代码如下:
解决方法是,避免多个地方同时操作hash对象,如果必须这样,就加个lock判断:
Iterator<Entry<?, ?>> iterator = hash.entrySet();
while (iterator.hasNext()) {
......
}
在执行过程中,其他部分执行了hash.put或hash.remove,造成hash变化,这样就出现该异常了。另外,使用iterator.remove()可以直接删除当前项。
解决方法是,避免多个地方同时操作hash对象,如果必须这样,就加个lock判断:
if (!isLocking())
执行