Threads ExecutorService shutdown abbrechen und service "starten" ?

CHAOSFISCH

Bekanntes Mitglied
Hallo,

Ich hab eine Client (standalone) Anwendung die SwingWorker über einen ExecutorService im Hintergrund ausführt. Der User kann eine gestartete Queue stoppen und sofort beenden.
(shutdown() und shutdownNow())
Der User soll die Queue nach einem shutdown / shutdownNow wieder starten können.
Wie macht man das am sinnvollsten? Muss ein neuer ExecutorService erstellt werden, der erst aktiv werden darf wenn der alte Service terminated ist oder kann ich den bestehenden ExecutorService nach Aufruf von shutdown(), shutdownNow() wieder zum arbeiten bringen?

Gruß
CHAOSFISCH
 

turtle

Top Contributor
:rtfm:
Laut Doku zu shutdown() bzw. shutdownNow():
Initiates an orderly shutdown in which previously submitted tasks are executed, but no new tasks will be accepted.
This method does not wait for actively executing tasks to terminate. Use awaitTermination to do that.

Also, solltest Du, wenn erforderlich, warten bis Deine Threads sich beendet haben. Wenn es das ist, was Du häufig benötigst lohnt vielleicht auch ein Blick in [JAPI]CompletionService[/JAPI].
 

CHAOSFISCH

Bekanntes Mitglied
:rtfm:
Laut Doku zu shutdown() bzw. shutdownNow():


Also, solltest Du, wenn erforderlich, warten bis Deine Threads sich beendet haben. Wenn es das ist, was Du häufig benötigst lohnt vielleicht auch ein Blick in [JAPI]CompletionService[/JAPI].

Mh, ich glaub jetzt mal das der completionService mir direkt für das Problem nichts bringt.
Ich wollte einen ExecutionerService einsetzen, um damit Resourcen sparend zu arbeiten.
Mir ging es halt um die Wiederverwendbarkeit des ExecutionerService selbst.
Bsp: Ein ExService wird erzeugt, ihm werden "n" SwingWorker submited. Der User ruft den shutdown auf, sodass keine Aufträge mehr angenommen werden.
Der User möchte die Aufträge nun doch wieder fortsetzen, Möglichkeiten:
  1. Programm neustarten - ziemlich unschön
  2. Einen neuen ExService erstellen - ja dann brauch ich den ja gleich nicht benutzen?! Dann hab ich unter umständen einen unvollständigen shutdown in ExService 1 und einen zu großen Speicherverbrauch durch den ExService 2
  3. Wiederverwendung von ExService 1 - durch "starten" dieses Services - geht das?!
Oder soll ich es irgendwie anders umsetzen!?

Gruß
CHAOSFISCH
 

CHAOSFISCH

Bekanntes Mitglied
Seh ichs richtig das folgendes Sinn macht:
Für meine Zwecke wird eine neue Klasse geschrieben.
Diese überschreibt die gegebenen Methoden shutdown, shutdownNow etc - die die ich halt benötige.
Ich füge anschließend eine Methode hinzu die den ExecutorService - also den ThreadPoolXYZ erweitert, die mir den ExecutorService quasi wieder startet und ein shutdown "Rückgängig" machen kann?

Oder gibt es eine sinnvollere Lösung.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F ExecutorService richtig anwenden Allgemeine Java-Themen 0
M ExecutorService, fängt nicht an Allgemeine Java-Themen 1
F ExecutorService sauber stoppen Allgemeine Java-Themen 8
S ExecutorService.invokeAll -- was passiert wenn einige Tasks schon ausgefuehrt wurden? Allgemeine Java-Themen 2
K Parallel programmieren mit ExecutorService Allgemeine Java-Themen 41
M callable in ExecutorService killen? Allgemeine Java-Themen 14
S ExecutorService Frage (concurrent Threads) Allgemeine Java-Themen 4
D Thread.setUncaughtExceptionHandler() für ExecutorService Allgemeine Java-Themen 4
C JProgressbar an ExecutorService koppeln Allgemeine Java-Themen 5
O Unterschied zwischen Semaphoren/Lock und ExecutorService Allgemeine Java-Themen 3
B Windows Shutdown abfangen Allgemeine Java-Themen 10
W Programm beim Shutdown beenden Allgemeine Java-Themen 3
M Windows shutdown? Allgemeine Java-Themen 12
C Problem bei ShutDown - Hook Allgemeine Java-Themen 5
OnDemand Thread / Service abbrechen Allgemeine Java-Themen 3
BRoll Methode abbrechen (Invoke von außen) Allgemeine Java-Themen 5
M for Schleife mit Swing Button abbrechen Allgemeine Java-Themen 7
N Prüfen ob Methode ausgeführt wird und diese ggf. abbrechen? Allgemeine Java-Themen 8
B Berechnung eines sinh abbrechen, wenn 16. Nachkommastelle sich nicht mehr ändert Allgemeine Java-Themen 7
T Verschachtelte Schleifen abbrechen Allgemeine Java-Themen 3
O Verschachtelte Iteration: Innere Iteration abbrechen Allgemeine Java-Themen 3
J Code-Sequenz nach 10 sec abbrechen? Allgemeine Java-Themen 3
N Methode abbrechen? Allgemeine Java-Themen 3
P iBatis, Ladevorgang abbrechen Allgemeine Java-Themen 18
G Timer abbrechen und neu starten Allgemeine Java-Themen 3
G Aufrufende Methode abbrechen Allgemeine Java-Themen 5
G timer mit buttondruck abbrechen Allgemeine Java-Themen 7
M InputStream.read abbrechen Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben