ExecutorService richtig anwenden

Fohnbit

Top Contributor
Hallo,

ich benötige in meinen Klassen sehr oft zyklisches und vezögertes Aufrufen von Methoden oder Anweisungen.

Soweit habe ich es:
Java:
    private ScheduledFuture<?> runningFailed;
    private ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();

    /**
     *
     * @param status
     */
 
    public void Running(boolean status) {
        if (status) {
            // prüfen ob Timer läuft. Wenn ja, abbrechen
            if (runningFailed != null) {
                runningFailed.cancel(true);
                runningFailed = null;
            }
            // Nachricht prüfen und abmelden
            if (msgNotRunning != null) {
                delMessage(visuId, msgNotRunning);
                msgNotRunning = null;

            } else {
                // Timer läuft bereits
                if (runningFailed != null) {
                    return;
                }
                // Timer erzeugen
                runningFailed = executor.schedule(new Runnable() {
                    public void run() {
                        sendMessage(msgNotRunning, "App " + appName
                                + " ist nicht gestartet", 5000,
                                FoxMessage.SEVERITY_FATAL, false);
                    }
                }, runningDelayMs, TimeUnit.MILLISECONDS);
            }
        }

    }

Wenn "status" true ist, den bereits laufenden Timer abbrechen.
Wenn "status" false ist, den Timer starten, falls er noch nicht läuft.

Wenn die Instanz der Klasse aber beendet wird, muss ich ja mit:
executor.shutdownNow();
alle eventuell laufenden Timer abbrechen, oder?

Gibt es eine Methode, die ich aufrufen kann, wenn die Instanz der Klasse wieder beendet wird?

Danke!
 

Zurück
Oben