java – 我使用同步列表,我仍然得到ConcurrentModificationException

前端之家收集整理的这篇文章主要介绍了java – 我使用同步列表,我仍然得到ConcurrentModificationException前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > ConcurrentModificationException despite using synchronized2
我使用Vector而不是ArrayList来使列表在多线程环境中安全.但是当我尝试在向量循环中添加项时,我不断得到ConcurrentModificationException.为什么会这样呢,我该如何防止呢?

解决方法

在迭代过程中您不能修改Vector.存储项目以添加到单独的向量中,并在循环完成时将其移动到Vector,或者循环遍历原始Vector的副本.

添加
要在java中获取Vector的互斥体,请在两个函数中执行此操作:

synchronized (list) {
  // modifying list
}

和:

synchronized (list) {
  // iterating over list
}

我当然假设列表是命名列表

原文链接:https://www.f2er.com/java/123832.html

猜你在找的Java相关文章