Hallo,
ich benötige sehr sehr oft zeitverzögerte Ausgaben, zyklische Ausgaben und dergleichen.
Ich nutze immer:
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:
Nur Timer starten, wenn er nicht läuft:
Wenn der Thread beendet:
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!
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: