質問

以下が正しい実装になるのだろうか

    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() 各スレッドの実行が完了するのを待ちます。これは(私が理解しているように)将来のそれぞれで、結果を個別に受信するのを待つことを意味します。それからの利益はどこにありますか、それとも私はそれを正しくしていませんか?

正しい解決策はありません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top