2010-05-13 5 views
5

Was ich brauche, ist eine Methode ähnlich wie shutdownNow, aber in der Lage, neue Aufgaben danach zu senden. Mein ThreadPoolExecutor akzeptiert während meiner Programmausführung eine zufällige Anzahl von Aufgaben.JAVA - Abbrechen der ThreadPoolExecutor laufenden Aufgaben

+1

Wäre die Option vorhanden, den aktuellen ExecutorService herunterzufahren und durch einen neuen zu ersetzen? – tylermac

Antwort

8

Sie können die Zukunft jeder Einreichung abrufen, diese Zukunft in einer Sammlung speichern und dann, wenn Sie die Aufgaben abbrechen möchten, future.cancel() aller in der Warteschlange befindlichen Aufgaben aufrufen.

Mit dieser Lösung läuft das Executor noch und alle laufenden Aufgaben werden abgebrochen oder nicht ausgeführt, wenn sie in der Warteschlange stehen.

+0

Danke, meine einzige Frage bezüglich Ihre Lösungen hatten ungefähr die Größe der Sammlung, da mein ThreadPoolExecutor unbegrenzte Aufgaben erhalten wird. Aber mit einer Map und überschreiben submit und afterExecute kann ich meine Sammlung nur mit den laufenden Aufgaben pflegen. – rgomesf

0

Warum erstellen Sie nicht Ihr eigenes ExecutorService, das dieses Verhalten aufweist?

0

Werfen Sie einen Blick auf die getQueue() Methode. Ich bin mir ziemlich sicher, dass das Löschen funktioniert (nicht getestet).

+1

GetQueue() kann nur die Aufgaben in der Warteschlange bereinigen. Kann nichts mit den bereits laufenden Aufgaben .. – rgomesf

-1

Ist es nicht genug, getQueue() zu tun und es zu löschen? Wenn Sie wirklich versuchen müssen, Tasks zu stoppen, müssen Sie den ThreadPoolExecutor ableiten und im Wesentlichen shutdownNow() neu implementieren, aber nur das Bit kopieren, das einen Interrupt an jeden Thread sendet. Beachten Sie, dass dies noch keine Garantie ist, dass Sie tatsächlich dazu führen, dass sie sofort aufhören und keine weitere Berechnung vornehmen. Sie brauchen einen völlig anderen Ansatz, wenn Sie das tun müssen.

+0

Ich habe bereits versucht, shutdownNow() zu implementieren, aber einige Variablen sind privat, und ohne sie kann ich nicht tun, was ich will ... – rgomesf

Verwandte Themen