2012-04-11 9 views

Antwort

1

Ich vermute, dass isTerminated() immer wahr zurückgibt, weil Sie shutdownNow() statt shutdown()und, gemäß der API-Dokumentation für shutdownNow() anrufen:

... typischen Implementierungen über Gewinde abgebrochen. interrupt()

Daher klingt es so, als ob Ihre Tasks alle sofort auf den Interrupt-Versuch reagieren, der sie sofort beendet.

0

Wie die Dokumentation sagt, "isTerminated ist nie wahr, es sei denn entweder shutdown oder shutdownNow wurde zuerst aufgerufen". Es sagt also nur, ob die Aufgaben beendet wurden, nicht ob sie erfolgreich waren. Sie könnten eine Flagge haben, wie eine AtomicBoolean und schalten Sie ihren Zustand kurz vor dem erfolgreichen Abschluss. Auf diese Weise würden Sie Methoden von ExecutorService verwenden, um zu überprüfen, ob die Aufgabe abgeschlossen ist, und Ihr Flag, um zu überprüfen, ob es erfolgreich beendet wurde.

Verwandte Themen