Thread (wann ist der letzte fertig!)
-
also sitze gerade voll auf der leitung!
ich habe ein array von threads erstellt! (Threads [] a = new meinethreadklasse[10])
jetzt starte ich diese threads in einer for schleife, wie kann ich nun herausfinden wann der letzte thread abgeschlossen ist, so wie ich das sehe, ist es ja nicht selbstverständich, dass derzuletzt gestartete thread auch als letzter abgeschlossen wird!
bitte helft mir! danke!
-
hab selber eine lösung gefunden, ist zwar aktives warten aber was solls!
ich definiere eine static int variable und diese lass ich in jedem thread um eins erhöhen, wenn dieser alles berechnet hat!
in der main klasse lasse ich eine while (finished < anzahlthread); laufen
wenn nun alle threads beendet sind und die finished somit die anzahl der threads ist bin ich am ende und kann weitermachen!
cu leute!
-
in der main klasse lasse ich eine while (finished < anzahlthread); laufen
Ist zwar ne Lösung - aber ne denkbar schlechte.
Wenn schon, dann solltest du was anderes machen, damit dein main-Thread einfach 'benachrichtigt' wird:public class X { Threads [] a = new meinethreadklasse[10]; private static int stoppedCount; public threadStopped() { stoppedCount++; if (stoppedCount == a.length) { //dieser Teil wird ausgeführt, wenn alle Threads beendet sind. } } [...] } class Y extends meinethreadklasse { //btw.: Klassennamen sollten mit einem Großbuchstaben // beginnen und bei Wortanfängen erneut Großbuchstaben haben => MeineThreadKlasse public void run() { [...] X.threadStopped(); //Einfach die Methode aufrufen, wenn der Thread fertig ist } }
(nur als Beispiel gedacht - ungetestet)