Тема: Глюк ТВ
Показать сообщение отдельно
Непрочитано 22.01.2022, 16:41   #6
Пользователь

По умолчанию Re: Глюк ТВ

Цитата:
Сообщение от vetal.lebed Посмотреть сообщение
Глупость.. Многопоточнусть утт не причем.
Типичная ошибка итерации в Foreach'ом и модификации той же коллекции..

Для решения проблемы всего-то нужно использовать Iterator
Вовсе не обязательно. Ошибка значит ровно одно - коллекция была изменена во время итерации. А сделано это внутри нашего цикла или где то в другом потоке это не важно.
Мы не видим проблемный код и можем только гадать.

Вот пример такого же исключения:
Цитата:
java.util.ConcurrentModificationException
at l2open.util.GArray$Itr.checkForComodification(GArr ay.java:338)
at l2open.util.GArray$Itr.next(GArray.java:300)
at ai.FreyaStand.onEvtAttacked(FreyaStand.java:192)
at l2open.gameserver.ai.AbstractAI.notifyEvent(Abstra ctAI.java:128)
at l2open.gameserver.ai.AbstractAI.notifyEvent(Abstra ctAI.java:111)
at ....l2open.gameserver.model.L2Character.onHitTimer (L2Character.java:2860)

Вот цикл где бросило ConcurrentModificationException
PHP код:
192:            for(L2NpcInstance minion _minionsList)
193:                attacker.addDamageHate(minion01000); 
Тоже переделать под итератор? Где тут в этих 2 строках изменяется _minionsList ?
flopix вне форума Ответить с цитированием