Java ExecutorService: awaitTermination aller rekursiv erstellte Aufgaben

Benutze ich ein ExecutorService zum ausführen einer Aufgabe. Diese Aufgabe kann rekursiv erzeugen andere Aufgaben, die einzureichen sind die gleichen ExecutorService und diese untergeordneten Aufgaben können das auch.

Ich habe jetzt das problem, dass ich warten möchte, bis alle Aufgaben erledigt sind (das heißt, dass alle tasks fertig sind und Sie nicht Einreichen), bevor ich weiter.

Kann ich nicht nennen ExecutorService.shutdown() im Haupt-thread, da dies verhindert, dass neue Aufgaben akzeptiert werden, die von der ExecutorService.

Und Ruft ExecutorService.awaitTermination() scheint, nichts zu tun, wenn shutdown wurde noch nicht genannt.

So bin ich irgendwie hier hängengeblieben. Es kann nicht sein, dass hart für die ExecutorService zu sehen, dass alle Arbeiter frei sind, kann es? Den nur unelegant Lösung könnte ich kommen mit, um direkt mit einem ThreadPoolExecutor und Abfrage seiner getPoolSize() jeder einmal in eine Weile. Gibt es wirklich keine bessere Art und Weise tun Sie das?

InformationsquelleAutor Christoph | 2011-02-10

Schreibe einen Kommentar