# Thread mit Rückgabewert?



## Curan (28. Jul 2009)

Hallo =)

Ich hab momentan ein kleines Problem und bin am überlegen wie ich es am "saubersten" lösen kann.

Hab eine kleine GUI erstellt, beim actionPerformed Event von einem jButton soll ein neuer Thread erstellt werden. Soweit so gut und das funktioniert auch, nun rufe ich innerhalb der run Methode eine privat Methode auf, die einen Rückgabewert vom Typ String hat. Nun weiß ich aber leider nicht, wie ich von der Klasse, in der ich den Thread gestartet habe, auf den Rückgabewert zugreifen kann.

Ich könnte natürlich einen private String erstellen, den Rückgabewert in dieser abspeichern, eine GetMethode definieren, die Klasse in meiner GUI instanzieren und mir den Wert holen. Aber ist das wirklich "schön"? Gibt es nicht einen anderen Weg den Rückgabewert zu übermitteln.

Vielleicht seh ich auch den Wald vor lauter Bäumen nicht mehr :bahnhof:


```
public class Video implements Runnable {
private String videoID;

public Video(String videoID){
  this.videoID = videoID
 }

@Override
public void run() {
  String fW2 = getVideoLink();
 }

private String getVideoLink(){
//....
  return fWert;
 }
}
```

lg


----------



## Marco13 (28. Jul 2009)

Was du angedeutet hast, ist grundsätzlich nicht falsch - allerdings gibt es dafür schon eine Klasse "SwingWorker", die man für sowas i.a. verwenden kann...


----------



## Painii (28. Jul 2009)

Ich denke da könnte man auch mit Observer/Observable rangehen oder?

Am Ende der run()-Methode wird dann irgendeine Klasse benachrichtigt das ein neuer String da ist und sie damit rumhantieren kann (weiss nicht wie gut sich das bei dir einbauen lässt).


----------



## aze (29. Jul 2009)

Vlt könnte auch die klasse Callable helfen.Dort gibt es so etwas wie Threads mit Rückgabewert.Ich habe aber nur davon gelesen und es noch nicht ausprobiert.Hier mal ein Link zu dem Thema:

Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 11.4 Der Ausführer (Executor) kommt


----------



## Curan (29. Jul 2009)

Hallo!

Hab es nun mit dem SwingWorker getestet und es funktioniert ganz gut, Button wird nicht blockiert 
Jetzt muss ich nur noch schauen ob ich es auch schaffe da eine jProgressbar mit zu verwenden. Wobei der Executor auch recht interessant ausschaut.

Wie auch immer, Danke für eure Hilfe, über weitere Antworten würde ich mich natürlich auch noch freuen.

lg


----------

