ConcurrentModificationException во время итерации по коллекции - PullRequest
0 голосов
/ 19 июня 2019

Я перебираю список в моем ItemProcessor в приложении Spring-Batch и получаю эту ошибку:

java.util.ConcurrentModificationException: null

Когда я настраиваю пакетную конфигурацию для использования одного потока, она работает нормально.Я использую SimpleAsyncTaskExecutor.Клиент является юридическим лицом, и у него есть список 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)

1 Ответ

5 голосов
/ 19 июня 2019

Когда я настраиваю пакетную конфигурацию на использование одного потока, она работает нормально.

Тогда ответ довольно прост: какой-то другой поток в настоящее время выполняет итерацию этой коллекции.

Теперь вам нужно сделать шаг назад и определить, где в вашем исходном коде эта коллекция может быть изменена во время работы этого кода.

Нет "магии", которая могла бы помочь избежать этого.

...