[Multi-Threads] Erreur java.util.ConcurrentModificationException lors de parcours d'une liste
Bonjour,
J'ai une liste initial contenant un ensemble de nom de fichiers (supposant 20).
J'ai un ensemble de threads (supposant 3) qui traiteront les elements de liste de cette maniere :
- Chaque thread a une liste, elle contient un ensemble de la liste initial (Thread 1 contient 7, Thread 2 contient 7 et Thread 3 contient 6)
- Le traitement se fait sur chaque element de la liste du thread
En ce moment j'ai pu repartir la liste initial sur l'ensemble des listes
Quand j'esseye de parcourir la liste du thread dans le thread (methode run), j'ai cette exception :
Code:
1 2 3 4
| Exception in thread "Thread-2" java.util.ConcurrentModificationException
at java.util.concurrent.CopyOnWriteArrayList$COWSubList.checkForComodification(CopyOnWriteArrayList.java:1127)
at java.util.concurrent.CopyOnWriteArrayList$COWSubList.size(CopyOnWriteArrayList.java:1167)
at fr.gouv.finances.tools.sftppoller.poller.ThreadReader.run(ThreadReader.java:21) |
La premiere partie de la methode run est :
Code:
1 2 3 4 5 6 7 8 9
| Iterator<String> it = getOwnFiles().iterator();
while (it.hasNext()) {
if (!Poller.toStop) {
logger.debug("Taille de la OwnFiles : " + getOwnFiles().size());
String fileName = it.next();
...
}
...
} |
La liste du thread OwnFiles est initialisé de cette maniere :
Code:
private List<String> ownFiles = new CopyOnWriteArrayList<String>();
Comment résoudre ce probleme ?
Merci