¿Cómo reiniciar la programación cuando scheduleWithFixedDelay lanza una excepción?

yo sueloScheduledExecutorService para programar algunas tareas que deben ejecutarse periódicamente. Quiero saber si este código funciona para recuperar la programación cuando ocurre una excepción.

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);
    }
}

Respuestas a la pregunta(4)

Su respuesta a la pregunta