ConcurrentModificationException
-
Si ça marche pas, soit faut faire un bloc synchronized, soit créer une copie de la liste
-
Tu peux nous dire a quoi servent tes listes ?
-
Mes liste sevent à enregistrer/supprimer les entités qui peuvent êtres animée ou non grâce à l’interface EntityAnimated
Cette erreur de “concurrence” arrive une fois le patch de la classe du Joueur autrement je n’ai pas cette erreur (mais le joueur n’est pas animé snif)
-
Pourquoi tu te sers de 2 listes alors ?
-
Effectivement, j’ai pas approfondi le code, qui n’est pas de moi à la base (jettez moi des cailloux) je rectifie le code donc
-
Je pense que l’erreur vient bêtement de ta fonction addEntity.
Le truc c’est que ta List est déjà utilisé la majeur partie du temps par l’événement TickEvent.Je ne citerai qu’un bout du tuto sur la synchronisation de developpez.com :
Évitez les anciennes Collections datant de Java 1.0 (Vector, Hashtable…) qui sont par défaut synchronisées, mais utilisez les nouvelles datant de Java 1.2 (ArrayList, HashMap…) qui ne sont pas synchronisées (meilleures performances). Pour récupérer une vue synchronisée d’une Collection, il suffit de faire Collections.synchronizedCollection(Collection).
Si la solution de copie synchro ne fonctionne pas, tu peux toujours te tourner vers les mutex.
-
Le problème existera toujours avec une vue synchronisée car les iterators ne sont pas thread-safe.
Il faut soit-même faire un iterator thread-safe ou effectuer une synchronisation global la portion de code qui utilise l’iterator. -
Ou juste copier la liste avant l’itération, et créer une liste d’éléments à supprimer après l’itération.
-
Cloner des listes n’est pas forcément une bonne idée, pour peu qu’elle soit grosse… Surtout qu’on parle ici d’une fonction appeler très régulièrement…
Le mieux niveau performance restera sans doute le mutex…
-
@‘AymericRed’:
Ou juste copier la liste avant l’itération, et créer une liste d’éléments à supprimer après l’itération.
Ce qui donnera des problèmes de synchronisations de données et des problèmes de performances