ScheduledExecutorService und ScheduledFuture<?>

Fohnbit

Top Contributor
Hallo,

ich benötige sehr sehr oft zeitverzögerte Ausgaben, zyklische Ausgaben und dergleichen.

Ich nutze immer:

Java:
private ScheduledFuture<?> calculationDelay;
private ScheduledExecutorService executor;

Nun muss aber auch oft ein laufender Timer beendet werden und wenn der Thread beendet, alles beendet werden.

Hierfür habe ich:
Zum Abbrechen und ggf. neu starten eines evetuell laufenden Timer:
Java:
    if (calculationDelay!= null) {
            calculationDelay.cancel(true);
            calculationDelay= null;
        }

calculationDelay= executor.schedule(new Runnable() {
       public void run() {
      
       }
     }, 20, TimeUnit.SECONDS);

Nur Timer starten, wenn er nicht läuft:
Java:
if (calculationDelay == null || calculationDelay.isDone()) {
            calculationDelay = executor.schedule(new Runnable() {
                public void run() {
              
                }
            }, 20, TimeUnit.SECONDS);
        }

Wenn der Thread beendet:
Java:
    executor.shutdownNow();

Ist das so korrekt?

Was passiert eigentlich wenn ich "calculationDelay" nicht zuerst abbreche und auf null setze?
Wird ein 2. Timer erzeugt oder würde durch die Neuzuweisung der "alte" sowie abgebrochen?

EDIT:
Sorry, im Titel fehlt das "S" am Beginn ... kanns wohl selber nicht hinzufügen ... eventuell kann ein Admin dies bearbeiten? Vielen dank!
 
Zuletzt bearbeitet:

Flown

Administrator
Mitarbeiter
Wenn du dein calculationDelay auf null setzen würdest, dann würdest du einen zweiten Timer starten und der alte würde noch weiterlaufen. Du pusht die Frage, aber das Ganze ist einfach eine Frage der Nachforschung, die du selbst als Programmierer betreiben solltest.

Wichtigste Anlaufstelle ist hier: Java-Doku.
 

Ähnliche Java Themen

Neue Themen


Oben