Hi,
ich hab mehrere Threads, die auf die gleiche LinkedList zugreifen sollen.
Nun kommt es teilweise vor, dass während ein Thread die Liste durchläuft ein anderer etwas heraus löscht, was dann halt zu einer ConcurrentModificationException führt.
Bisher habe ich das Durchlaufen so gemacht:
Jetzt habe ich gelesen, dass es mit
klappen soll.
Sieht soweit auch ganz gut aus.
Nun wollte ich mal frage, was denn eigentlich effektiver ist, um eine Liste zu durchlaufen?
Oder nimmt sich das nicht?
Und gibts noch eine bessere Methode, um auf eine Liste zu zu greifen, die von mehreren Threads benutzt wird?
Oder kann man einfach die Exception eleminieren? (Weil eigentlich dürfte es doch nicht stören, wenn da ein Element aus der Liste fliegt, während sie durchlaufen wird - oder?)
Gruß,
David
ich hab mehrere Threads, die auf die gleiche LinkedList zugreifen sollen.
Nun kommt es teilweise vor, dass während ein Thread die Liste durchläuft ein anderer etwas heraus löscht, was dann halt zu einer ConcurrentModificationException führt.
Bisher habe ich das Durchlaufen so gemacht:
Java:
LinkedList<Klasse> klassenliste = ...
for(Klasse k: klassenliste){
//tue irgendwas
}
Jetzt habe ich gelesen, dass es mit
Java:
LinkedList<Klasse> klassenliste = ...
Klasse klasse;
for(int i = 0; i < klassenliste.size(); i++){
klasse = klassenliste.get(i);
//tue irgendwas
}
Sieht soweit auch ganz gut aus.
Nun wollte ich mal frage, was denn eigentlich effektiver ist, um eine Liste zu durchlaufen?
Oder nimmt sich das nicht?
Und gibts noch eine bessere Methode, um auf eine Liste zu zu greifen, die von mehreren Threads benutzt wird?
Oder kann man einfach die Exception eleminieren? (Weil eigentlich dürfte es doch nicht stören, wenn da ein Element aus der Liste fliegt, während sie durchlaufen wird - oder?)
Gruß,
David