У меня есть метод, аналогичный описанному ниже:
public void addSubjectsToCategory() {
final List<Subject> subjectsList = new ArrayList<>(getSubjectList());
for (final Iterator<Subject> subjectIterator =
subjectsList.iterator(); subjectIterator.hasNext();) {
addToCategory(subjectIterator.next().getId());
}
}
Когда это выполняется одновременно для одного и того же пользователя (другой экземпляр), иногда он NoSuchElementException
. По моему пониманию, иногда subjectIterator.next()
выполняется, когда в списке нет элементов. Это происходит только при доступе. Будет ли синхронизация методов решить эту проблему?
Трассировка стека:
java.util.NoSuchElementException: null
at java.util.ArrayList$Itr.next(Unknown Source)
at org.cmos.student.subject.category.CategoryManager.addSubjectsToCategory(CategoryManager.java:221)
Эта трассировка стека терпит неудачу в addToCategory(subjectIterator.next().getId());
линия.