Wie starte ich den Zeitplan neu, wenn scheduleWithFixedDelay eine Ausnahme auslöst?

ich benutzeScheduledExecutorService um einige Aufgaben zu planen, die regelmäßig ausgeführt werden müssen. Ich möchte wissen, ob dieser Code funktioniert, um den Zeitplan wiederherzustellen, wenn eine Ausnahme auftritt.

ScheduledExecutorService service = Executors.newScheduledThreadPool(1);
this.startMemoryUpdateSchedule(service);//See below method

//Recursive method to handle exception when run schedule task
private void startMemoryUpdateSchedule(ScheduledExecutorService service) {
    ScheduledFuture<?> future = service.scheduleWithFixedDelay(new MemoryUpdateThread(), 1, UPDATE_MEMORY_SCHEDULE, TimeUnit.MINUTES);
    try {
        future.get();
    } catch (ExecutionException e) {
        e.printStackTrace();
        logger.error("Exception thrown for thread",e);
        future.cancel(true);
        this.startMemoryUpdateSchedule(service);
    } catch(Exception e) {
        logger.error("Other exception ",e);
    }
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage