Mehrere Tasks nacheinander ausführen

Nachtfalke

Aktives Mitglied
Hallo zusammen,

ich benutze in einer Anwendung org.jdesktop.application.TaskService, um Tasks zu starten. Das funktioniert soweit auch prima. Jetzt möchte ich aber mehrere Tasks nacheinander ablaufen lassen.
Bei einem normalen Aufruf instanziere ich zunächst einen Taskservice:
Java:
TaskService ts = Application.getInstance().getContext().getTaskService();
Und starte dann meinen Task:
Java:
ts.execute(new Task1(this.getApplication()));
Wenn ich nun direkt in der nächsten Zeile den nächsten Task starte:
Java:
ts.execute(new Task2(this.getApplication()));
werden Task1 und Task2 parallel ausgeführt. Wie bringe ich dem Taskservice bei, daß er zunächst Task1 erledigen soll, bevor er Task2 startet?
 
Java:
ts.waitFor();

Btw. wenn die waitFor Methode eine 1 zurückgibt, dann ist das Programm Fehlerhaft beendet worden.


Edit: Beim ersten Überfliegen war es mir garnicht aufgefallen. Für welches System denn? Die beschriebene Methode ist für Windows, Mac und Linux.
 
Zuletzt bearbeitet:
Eine Methode namens waitFor gibt es in der Klasse TaskService nicht. Lediglich die Methoden wait(), wait(long timeout) und wait(long timeout, int nanos).
 
Ich habe ein Beispiel aus dem Netz ausprobiert und es funktionierte für einen einzelnen Task einwandfrei. Einen Link habe ich aber leider nicht mehr. Was ist falsch am TaskService?
 
ich nehme an das die von dir angesprochenen wait() methoden nur von object geerbt wurden ...

alternativ kannst du dir mal ProcessBuilder ansehen ...
1) ist standard-api
2) besitzt die möglichkeit auf da beenden eines prozesses zu warten ...

auch solltest du sowas wie deine anonymen objekte [c]ts.execute(new Task1(this.getApplication()));[/c] nicht verwenden ...
vielleicht gibt es ja in der super-klasse von "Task1" eine methode welche dich auf diesen warten lässt ...
darauf hast du aber dann von außen keinen zugriff da das objekt nur anonymen innerhalb des call-stack exisitiert ...
 
Wenn ich die Dokumentation richtig verstehe, dient die Klasse ProcessBuilder dazu, externe Programme auszuführen. Das ist aber nicht das, was ich will. Task1 und Task2 sind von mir implementierte Klassen.
 
Problem hat sich erledigt. Ich habe es jetzt mit einem Timer gelöst, der einmal pro Sekunde prüft, ob der aktuelle Task durch ist und dann den nächsten anschubst.
 

Neue Themen


Zurück
Oben