Comment récupérer le résultat de la tâche exécutée périodiquement (toutes les n secondes)? Le résultat est nécessaire dans un traitement ultérieur. Et la tâche devrait durer éternellement (en tant que service, jusqu'à ce que le service soit désactivé). Je n'utilise pas Spring.Comment récupérer le résultat dans une tâche exécutée périodiquement à l'aide de l'option Appelable
Étant donné que seuls les retours Callable résultent, je dois utiliser cette méthode: schedule (Callable task, long delay, TimeUnit timeunit)
, pas la méthode scheduleAtFixedRate
, et la placer dans une boucle while(true)
indéfinie. Y a-t-il une meilleure solution? Le problème consiste à récupérer le résultat de la tâche exécutée périodiquement.
public class DemoScheduledExecutorUsage {
public static void main(String[] args) {
ScheduledFuture scheduledFuture = null;
ScheduledExecutorService scheduledExecutorService =
Executors.newScheduledThreadPool(1);
while (true) {
scheduledFuture =
scheduledExecutorService.schedule(new Callable() {
public Object call() throws Exception {
//...some processing done in anothe method
String result = "Result retrievd.";
return reult;
}
},
10,
TimeUnit.SECONDS);
try {
//result
System.out.println("result = " + scheduledFuture.get());
} catch (Exception e) {
System.err.println("Caught exception: " + e.getMessage());
}
}
//Stop in Deactivate method
//scheduledExecutorService.shutdown();
}
}