先物を介してスレッドを実装します
-
29-10-2019 - |
質問
以下が正しい実装になるのだろうか
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()
各スレッドの実行が完了するのを待ちます。これは(私が理解しているように)将来のそれぞれで、結果を個別に受信するのを待つことを意味します。それからの利益はどこにありますか、それとも私はそれを正しくしていませんか?
正しい解決策はありません
所属していません StackOverflow