Guten Abend
Rechfertigung: Boardsuche und Google benutzt, keine passende Lösung gefunden.
Zum Thema:
Ich habe eine normale Main Klasse die mittels for Schleife "n" Threads erstellt
Hier ein Beispiel;
Jeder Thread hat eine unterschiedliche Laufzeit und soll ein Ergebnis zurückgeben.
Die run() Methode sieht aber keinen Rückgabewert vor. Somit habe ich es mittels eines Getters versucht auf die jeweiligen Ergebnisse zuzugreifen (von der Main aus).
Leider ohne Erfolg (es kommt immer 0 raus (aufgrund der 0 die ich keim initialisieren festlege).
Ich habe daraufhin den Start der Thrads in ein "synchronized" block gepackt sowie auch den "Getter" in der Thrad Methode um die überspeicherung zu verhindern. Leider ebenfalls ohne Erfolg )es kommt immernoch der wert 0 raus.
Wir nochmal der Inhalt der Thread Klasse
Rechfertigung: Boardsuche und Google benutzt, keine passende Lösung gefunden.
Zum Thema:
Ich habe eine normale Main Klasse die mittels for Schleife "n" Threads erstellt
Hier ein Beispiel;
Code:
fibThread f = null;
for (int i = 0; i < numberArray.length; i++) {
try {
f = new fibThread(numberArray[i], i, size, startTime);
f.start();
} catch (Exception e) {
newray[i] = -1;
}
}
Die run() Methode sieht aber keinen Rückgabewert vor. Somit habe ich es mittels eines Getters versucht auf die jeweiligen Ergebnisse zuzugreifen (von der Main aus).
Leider ohne Erfolg (es kommt immer 0 raus (aufgrund der 0 die ich keim initialisieren festlege).
Ich habe daraufhin den Start der Thrads in ein "synchronized" block gepackt sowie auch den "Getter" in der Thrad Methode um die überspeicherung zu verhindern. Leider ebenfalls ohne Erfolg )es kommt immernoch der wert 0 raus.
Wir nochmal der Inhalt der Thread Klasse
Code:
public class fibThread extends Thread {
int input;
int result;
fibThread(int input) {
this.input = input;
}
fibThread() {
}
@Override
public void run() {
try {
result = FibCalc.fib(input);
//synchronized (this) { //Die Ausgabe ist Synchronisiert
//result = FibCalc.fib(input);
//}
} catch (FibException e) {
e.printStackTrace();
}
}
public int getResult()
{
return result;
}
}