Warten bei mehreren Threads, bis Ende erreicht ist

Status
Nicht offen für weitere Antworten.

lokly

Aktives Mitglied
Hallo zusammen..

Ich hab da nen kleines Problem:

Mehrere Threads der Klasse T werden von Klasse A in ein Array gepackt.
In Klasse A soll erst weiter gearbeitet werden, wenn alle Threads abgearbeitet worden sind.

Und da hab ich jetzt das Problem..

Java:
Thread [] a = new Thread[liste.length];

for(int i=0;i<liste.length;i++){
	        a[i] = new Thread();
	        a[i].start();
}

for(int i=0;i<liste.length;i++){
	        a[i].join();
}

Angenommen liste.length sei 10. a[0] wird gestartet, dabei könnte a[0] schon abgearbeitet sein, bevor a[9] erreicht wird. Wäre dann die 2te for Schleife noch richtig?

Was nicht geht (schon getestet):
Java:
for(int i=0;i<liste.length;i++){
	        a[i] = new Thread();
	        a[i].start();
	        a[i].join();
}

Dabei würde a[0] gestartet und gewartet, bis a[0] zu ende ist..

Könnt ihr mir Helfen, was ich hier falsch mache, bzw. ob meine Lösung richtig ist - oder gibt es da noch etwas "eleganteres"?
Vielen Dank im Voraus..
 
mit den zwei Schleifen müsste es funktionieren,
wenn ein Thread schon fertig ist, wird join() auch sofort beendet

theorerisch möglich also, dass nach dem Start des 10. Thread die ersten beiden schon fertig sind,
dann werden die ersten beiden join() schnell abgehakt,
beim dritten muss dagegen 10 sec gewartet werden, in der Zeit sind auch alle späteren schon fertig,
dann werden die restlichen 7 join() nach dem dritten auch wieder in wenigen ns bearbeitet,

das Ende der zweiten Schleife ist nach Ende aller Threads erreicht, mehr ist nicht wichtig
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben