gpt4 book ai didi

java - 通过集合进行迭代期间出现 ConcurrentModificationException

转载 作者:行者123 更新时间:2023-12-01 16:43:53 24 4
gpt4 key购买 nike

我正在 spring-batch 应用程序中迭代 ItemProcessor 中的列表,但收到此错误:

java.util.ConcurrentModificationException: null

当我将批处理配置设置为使用单线程时,它工作正常。我正在使用 SimpleAsyncTaskExecutor。 Customer 是一个实体,它有一个 CustomerAlias 列表。

private void fillCustomer(final Customer customer, final ExtractLine result){

CustomerAlias customerAlias = customer.getCustomerAlias().stream().filter(s -> s.getAliasType().isAster()).findFirst().orElse(nullAlias);
result.setCustomer(customerAlias.getCalNmeAliasName());
}


java.util.ConcurrentModificationException: null
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)
at java.util.ArrayList$Itr.next(ArrayList.java:851)
at org.hibernate.collection.internal.AbstractPersistentCollection$IteratorProxy.next(AbstractPersistentCollection.java:815)
at java.util.Spliterators$IteratorSpliterator.tryAdvance(Spliterators.java:1812)
at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:464)
at com.liq.sub.impl.MyProcessor.fillCustomer(MyProcessor.java:107)

最佳答案

When I set my batch config to use a single thread it works fine.

那么答案非常简单:其他一些线程当前正在迭代该集合。

现在您需要退一步并确定在代码运行时集合可能在源代码中被修改的位置。

没有任何“魔法”可以帮助避免这种情况。

关于java - 通过集合进行迭代期间出现 ConcurrentModificationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56662111/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com