问题标签 [concurrentmodification]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
183541 浏览

java - 为什么会抛出 ConcurrentModificationException 以及如何调试它

我正在使用 a CollectionHashMap由 JPA 间接使用,它确实如此),但显然代码随机抛出一个ConcurrentModificationException. 是什么原因造成的,我该如何解决这个问题?通过使用一些同步,也许?

这是完整的堆栈跟踪:

0 投票
9 回答
77921 浏览

java - 并发修改异常

我有一小段代码,它给了我并发修改异常。我不明白为什么我一直得到它,即使我没有看到正在执行任何并发修改。

0 投票
5 回答
7735 浏览

java - Guava MultiMap 和 ConcurrentModificationException

我不明白为什么当我遍历 this 时会得到 ConcurrentModificationException multimap。我阅读了以下条目,但我不确定我是否理解了整个事情。我试图添加一个同步块。但我的疑问是与什么同步,何时同步。

multimap是一个字段并像这样创建:

并像这样使用:

像这样(我试图在地图上同步这部分,但没有成功)

0 投票
2 回答
523 浏览

java - 你如何对集合进行交互并在没有 ConcurrentModificationException 的情况下修改其项目?

我需要做这样的事情......

显然这会抛出 ConcurrentModificationException ...

所以我已经尝试过了,但看起来并不优雅/高效,并引发了 Type safety: Unchecked cast from Object to T 警告

0 投票
1 回答
1805 浏览

java - 线程“AWT-EventQueue-0”java.util 中的异常

如何修复此代码?我不知道这个错误是什么意思...我听说它来自于在 for each 循环期间删除了列表的元素,但我没有看到我要删除的任何内容...

jcomponent 有一个称为图层的对象列表,它将 Graphics 传递给这些对象,以便图层可以自己绘制。我从不移除任何层或任何东西,所以我迷路了。帮助?

0 投票
5 回答
5684 浏览

java - 为什么一个循环会抛出 ConcurrentModificationException,而另一个不会?

我在编写旅行推销员程序时遇到了这个问题。对于内部循环,我尝试了

但是当向该列表添加另一个点时会导致ConcurrentModicationException被抛出。

但是,当我将循环更改为

循环运行良好,没有引发异常。

都是 for 循环,那么为什么一个会抛出异常而另一个不会呢?

0 投票
3 回答
3009 浏览

java - JSP 标记类中的同步块

在过去的几天里,我试图找到以下问题的答案,但找不到全面的答案

问题陈述

我有一个自定义 JSP 标记类,它处理 Web 表单提交、捕获数据并将其写入文件系统中的同一文件。与所有 Web 应用程序一样,这可以同时触发,并且我担心多个线程会在处理每个提交(我们都知道 Servlet 是如何工作的。)

代码

问题: - 一个文件对象可以由一个线程打开以进行写入,同时另一个线程可能会尝试访问并失败并引发异常所以我认为同步(在对象上)应该可以解决问题,但请阅读一些地方jsp引擎会有jsp标签对象池,所以我担心 同步(this)不起作用,应该改为 同步(this.getClass()) 仅供参考:上面的代码放在JSP自定义标签类中。

编辑:

问题1:代码块应该通过synchronized(this)还是synchronized( this.getClass ())来同步

问题2:如果Web应用程序部署在集群环境中,如何处理相同的场景?

0 投票
4 回答
3627 浏览

java - 迭代器类和 foreach 构造之间的性能差异

我正在运行以下代码,但有时在运行它时会遇到某种并发异常。

我对其进行了重构以解决并发问题,但它确实让我提出了一个问题。如果我将 for 构造更改为 Iterator 模式,性能会有所不同吗?foreach 构造和 Iterator 类之间的访问级别有什么区别?

0 投票
6 回答
16556 浏览

java - 在 Java 中修改对象时如何迭代对象?

可能的重复:
Java:高效等效于在迭代集合时
移除

我正在尝试循环HashMap

...并提取group0. 这是我的方法:

这里的问题是每次调用assign()都会从中删除元素group0,从而修改其大小,从而导致以下错误:

那么......我如何在group0动态变化时循环遍历元素?

0 投票
2 回答
285 浏览

file-io - 当其他进程在 *nix 系统上写入文件时无法追加到文件

我有一段非常简单的代码,它只是定期将少量数据写入文件。一旦我的程序创建了文件并附加了一些数据,当我在 vim(或任何其他编辑器)中打开这个文件并编辑它时,我的进程似乎无法再更新文件了。我没有看到系统调用返回任何错误。我尝试跟踪系统调用,即使文件没有被更新,也没有发现任何奇怪的东西。

由于每个进程都有自己的具有当前偏移量的文件表条目,我所期待的只是一个输出文件,其中的数据散布着来自两个非合作进程的写入(也可能是乱码)。但我观察到的是,一旦任何其他编辑器写入文件,我的程序就无法再更新文件。

其他一些有趣的观察

1)当我cat东西到输出文件时,我的程序可以继续更新没问题

2)当我自己的程序的多个实例写入同一个文件时,一切都很好

我知道有强制锁定以防止多次写入,但我试图了解下面发生的事情。对于某些记录器(如系统日志、apache 日志等),这种情况也表现正常

有什么想法可以解释这种行为吗?还有关于如何进一步调试的任何提示?

我的代码很简单: