Интересно, если следующий будет правильная реализацияРеализация Темы через фьючерсы
ExecutorService pool = Executors.newFixedThreadPool(MAX_NSH_THREADS);
Set<Future<Void>> futureRequest = new HashSet<Future<Void>>();
for (String host : SomeCollection)) {
Callable<Void> callable = new FileExtractor(j);
Future<Void> future = pool.submit(callable);
futureRequest.add(future);
}
for (Future<Void> future : futureRequest) {
try {
future.get();
} catch (Exception e) {
logger.error(e);
}
}
pool.shutdown();
Согласно Javadoc, future.get()
ждет для выполнения, чтобы завершить для каждого потока, который (как я понимаю) означает, что для каждого из в будущем мы будем ждать получения результатов отдельно. Где польза от этого, или я не делаю это правильно?
Какую пользу вы пытаетесь получить? Кажется, что это сработает, но да, просто будет ждать, пока все фьючерсы будут завершены, прежде чем он выключит пул ... – elijah