Moin zusammen,
mein Problem lässt sich leider schlecht kurz in Worte bzw Suchbegriffe fassen. Ich experimentiere mit Threads und habe das auch schon erfolgreich getestet (Minimalbeispiel). Ich möchte Nebenläufigkeit mithilfe von Stupidsort ausprobieren
Problem: Sobald ich zwei Threads starte, besteht das sortierte Array auf einmal nur noch aus gleichen Werten.
Meine Main-Methode der Klasse "Test" startet die Threads und übergibt ein Array mit Zufallszahlen:
Die Threads würfeln das Array durch und laufen so lange, bis das Array sortiert ist. In den Klassen verwende ich lokale Attribute, bis auf "Test.ergebnis".
Wenn ein Thread fertig ist, sendet Dieser die Lösung dann an Test:
Der Algorithmus selbst funktioniert. Wenn einer der Threads allein arbeitet und der andere beispielsweise eine Endlosschleife durchführt, dann kommt das korrekte Ergebnis.
So schaut das Ergebnis beider Threads aus:
Vielen Dank schonmal für eure Anregungen. Vermutlich ist das ein ganz grundsätzlicher Konstruktionsfehler
mein Problem lässt sich leider schlecht kurz in Worte bzw Suchbegriffe fassen. Ich experimentiere mit Threads und habe das auch schon erfolgreich getestet (Minimalbeispiel). Ich möchte Nebenläufigkeit mithilfe von Stupidsort ausprobieren
Problem: Sobald ich zwei Threads starte, besteht das sortierte Array auf einmal nur noch aus gleichen Werten.
Meine Main-Methode der Klasse "Test" startet die Threads und übergibt ein Array mit Zufallszahlen:
Java:
static int [] ergebnis = new int [10]; //außerhalb der main()-Methode
// (...)
// in der main()-Methode:
int [] z = {1,4,9,13,3,2,17,4};
Thread t1 = new Thread( new testp1(z) );
Thread t2 = new Thread( new testp2(z) );
t1.start();
t2.start();
Die Threads würfeln das Array durch und laufen so lange, bis das Array sortiert ist. In den Klassen verwende ich lokale Attribute, bis auf "Test.ergebnis".
Wenn ein Thread fertig ist, sendet Dieser die Lösung dann an Test:
Java:
Test.ergebnis = this.ergebnis1;
Der Algorithmus selbst funktioniert. Wenn einer der Threads allein arbeitet und der andere beispielsweise eine Endlosschleife durchführt, dann kommt das korrekte Ergebnis.
So schaut das Ergebnis beider Threads aus:
Das Ergebnis ist: {1,9,9,9,9,9,9,9,9,9} (Thread 2)
Vielen Dank schonmal für eure Anregungen. Vermutlich ist das ein ganz grundsätzlicher Konstruktionsfehler