Hey, ich habe ein kleines Problem mit meinem Programm.
Ich möchte das Tasks von verschiedenen Threads bearbeitet werden. Es gibt verschiedene Berechnungsschritte und wenn die Threads mit den Tasks des ersten Berechnungsschritts fertig sind, werden die des Tasks des zweiten Berechnungsschritts in den Pool geladen.
ThreadPool erstellen tue ich mit ExecutorService.
Habe auch eine Klasse Tasks, die immer vom Hauptthread erstellt und in den Pool geladen wird.
Der Konstruktur der Klasse Task bekommt immer das gleiche Matrix-Objekt, weil damit gearbeitet werden soll. Wie es in Java üblich ist passiert dies per Referenz also einfache Übergabe.
Wenn ich jetzt nur einen Thread benutze und immer nur ein Task hochgeladen wird und nach dem bearbeiten des Tasks erst der nächste Task hochgeladen wird, dann funktioniert alles. Aber wenn ich alles Tasks des ersten Schrittes hochlade und dann warte, kommt nicht das richtige Ergebnis raus.
In der Klasse Matrix selbst habe ich eine Memberfunktion, mit der ich Punkte setzte. Dies benutze ich dann in den Tasks.
Weiß leider nicht genau, woher das kommt.
Hätte noch ne zweite Frage: Wie erstelle ich ein Future-Array um damit gewisse Rückgabewerte nach dem ersten Berechnungsschrittes zu erhalten und den Hauptthread zu stoppen bis die Tasks fertig sind?
MfG
Ich möchte das Tasks von verschiedenen Threads bearbeitet werden. Es gibt verschiedene Berechnungsschritte und wenn die Threads mit den Tasks des ersten Berechnungsschritts fertig sind, werden die des Tasks des zweiten Berechnungsschritts in den Pool geladen.
ThreadPool erstellen tue ich mit ExecutorService.
Habe auch eine Klasse Tasks, die immer vom Hauptthread erstellt und in den Pool geladen wird.
Der Konstruktur der Klasse Task bekommt immer das gleiche Matrix-Objekt, weil damit gearbeitet werden soll. Wie es in Java üblich ist passiert dies per Referenz also einfache Übergabe.
Wenn ich jetzt nur einen Thread benutze und immer nur ein Task hochgeladen wird und nach dem bearbeiten des Tasks erst der nächste Task hochgeladen wird, dann funktioniert alles. Aber wenn ich alles Tasks des ersten Schrittes hochlade und dann warte, kommt nicht das richtige Ergebnis raus.
In der Klasse Matrix selbst habe ich eine Memberfunktion, mit der ich Punkte setzte. Dies benutze ich dann in den Tasks.
Weiß leider nicht genau, woher das kommt.
Hätte noch ne zweite Frage: Wie erstelle ich ein Future-Array um damit gewisse Rückgabewerte nach dem ersten Berechnungsschrittes zu erhalten und den Hauptthread zu stoppen bis die Tasks fertig sind?
MfG
Zuletzt bearbeitet: