In diesem Fall benötigen Sie nur den Anruf an shutdown()
.
Es gibt zwei Optionen in der ScheduledThreadPoolExecutor
, die hier hinter den Kulissen erstellt wird. getExecuteExistingDelayedTasksAfterShutdownPolicy()
ist standardmäßig auf true
und getContinueExecutingPeriodicTasksAfterShutdownPolicy()
voreingestellt auf false
. Wenn Sie also den Dienst einfach herunterfahren, werden regelmäßige Aufgaben abgebrochen, aber alle verzögerten Aufgaben werden weiterhin ausgeführt. Da die betreffende Aufgabe eine periodische Aufgabe ist, wird sie beim Herunterfahren abgebrochen.
Meine persönliche Meinung ist, dass es besser ist, die .cancel(true)
vor dem Herunterfahren manuell aufzurufen. Während dies in der Praxis keine unterschiedlichen Auswirkungen hat, ist es gut für Programmierer, die die Optionen auf dem Executor möglicherweise nicht kennen, um zu sehen, dass die periodische Aufgabe beim Herunterfahren abgebrochen werden soll. Dies bedeutet auch, dass, wenn jemand jemals hereinkommt und den Executor zu einem ändert, der beim Herunterfahren nicht abbricht, diese Aufgabe trotzdem abgebrochen wird. Also wirklich, ich denke der Hauptvorteil hier ist die Klarheit des Codes.