Bonsoir :o)
Voilà j'ai un soucis avec un Hashtable dans mon programme. Mon Hashtable est utilisé un peu partout dans mon programme dans des threads bien différents, mais lorsque je souhaite quitter, j'execute une méthode quitterProgramme() qui est dans le thread UI donc qui fait celà :
Cependant, quand j'arrive au it.remove() il arrive bien souvent que celui-ci soit entrain d'être modifié ou autre. Et donc j'ai une exception :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 private void quitterProgramme() { for (Iterator<Integer> it = serveurs.keySet().iterator() ; it.hasNext() ; ) { serveurs.get(it.next()).deconnexionServeur(); it.remove(); } }
Caused by: java.util.ConcurrentModificationException
at java.util.Hashtable$HashIterator.remove(Hashtable.java:771)
Mais normalement, le HashTable n'est pas censé être synchronisé ? Pour justement empêcher ce genre de soucis ? J'ai du mal comprendre quelque chose je crois ..
Il n'y a donc pas un moyen de dire au it.remove() de s'executer juste après la modification en cours ?
Merci
Partager