Как получить результат из задачи, которая выполняется периодически (каждые n секунд)? Результат необходим для дальнейшей обработки. И задача должна выполняться вечно (как услуга, пока услуга не будет отключена). Я не использую Spring.Как получить результат в задаче периодического запуска с использованием Callable
Поскольку результат только для Callable возвращает результат, я должен использовать этот метод: schedule (Callable task, long delay, TimeUnit timeunit)
, а не scheduleAtFixedRate
метод, и поместить его в неопределенный while(true)
цикл. Есть ли лучшее решение? Проблема заключается в извлечении результата из задачи периодического запуска.
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();
}
}