У меня есть класс, который реализует Callable
, и у него есть метод, который переопределяет call
и возвращает Long
.
Я создаю List
из Callable<Long>
как
List<Callable<Long>> callables = new ArrayList<>();
for (File fileEntry : folder.listFiles()) {
callables.add(new DataProcessor(fileEntry));
У меня есть
ExecutorService threadPoolExecutor = Executors.newFixedThreadPool(10);
, и я звоню
threadPoolExecutor.invokeAll(callables)
.stream()
.map(future -> {
try {
return future.get();
} catch (Exception e) {
throw new IllegalStateException(e);
}
})
.collect(Collectors.toLong(/* what goes here? */));
Я хочу суммировать все возвращаемые значения из future.get()
.
Кроме того, так как я вызываю invokeAll, мне все еще нужно завершить работу на Executor?