Hier ist der Code:Warum wartet das Programm darauf, dass der schedule() beendet wird, aber nicht auf scheduleWithFixedDelay() wartet?
ScheduledExecutorService service = null;
try {
service = Executors.newSingleThreadScheduledExecutor();
Runnable task1 =() -> System.out.println("Executed only once");
Runnable task2 =() -> System.out.println("Executed repeatedly");
service.schedule(task1, 5, TimeUnit.SECONDS);
service.scheduleWithFixedDelay(task2, 6, 2, TimeUnit.SECONDS);
} finally {
if (service != null) {
service.shutdown();
}
}
Wenn Sie den obigen Code Ausführung des Programms 5 Sekunden wartet Zeitplan ausgeführt(), aber danach wird es beendet, ohne dass die scheduleWithFixedDelay läuft().
Ich vermute, der Grund ist, dass schedule() im Gegensatz zu den scheduleWithFixedDelay() synchron ausgeführt wird, aber ich habe die Argumente dafür in den Dokumenten nicht gefunden.