Java exécuter la tâche avec un certain nombre de tentatives et un délai d'attente

Je suis en train de créer une méthode qui exécute une tâche donnée dans un maximum de temps. Si elle ne parvient pas à terminer dans le temps imparti, il doit être répétée un nombre de fois avant d'abandonner. Il faut aussi attendre un certain nombre de secondes entre chaque essai. Voici ce que j'ai trouver et j'aimerais avoir quelques critiques sur ma façon de faire. Est un moyen plus simple de faire cela à l'aide de la ScheduledExecutorService ou est ma façon de faire, que cela suffise?

public static <T> T execute(Callable<T> task, int tries, int waitTimeSeconds, int timeout) 
    throws InterruptedException, TimeoutException, Exception {

    Exception lastThrown = null;
    for (int i = 0; i < tries; i++) {
        try {
            final Future<T> future = new FutureTask<T>(task);
            return future.get(timeout, TimeUnit.SECONDS);
        } catch (TimeoutException ex) {
            lastThrown = ex;
        } catch (ExecutionException ex) {
            lastThrown = (Exception) ex.getCause();
        }
        Thread.sleep(TimeUnit.SECONDS.toMillis(waitTimeSeconds));
    }
    if (lastThrown == null) {
        lastThrown = new TimeoutException("Reached max tries without being caused by some exception. " + task.getClass());
    }
    throw lastThrown;
}
InformationsquelleAutor Hiro2k | 2012-08-01