0

私の質問は、Java マルチスレッド プログラミングに関連しています。
多くのワーカーを作成するメインスレッドを扱っています。すべてのワーカーはスレッドです。
ワーカーからメイン スレッドへの結果/エラーを取得するために、Callable と Future を使用しました。ワーカーから例外を取得するために、 guava FutureCallback
インターフェイス で見つけました。 ウェブ上で例が見つからなかったので、私の質問はそれをどのように使用するかです。 ありがとう !


4

1 に答える 1

3

整数の結果の例を次に示します。

ListeningExecutorService executor = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(4));
int runs = 100;
for (int k=0; k < runs; k++) {
    Callable<Integer> job = ...; // create the job here
    ListenableFuture<Integer> completion = executor.submit(job);
    Futures.addCallback(completion, new FutureCallback<Integer>() {

        @Override
        public void onFailure(Throwable t) {
            // log error
        }

        @Override
        public void onSuccess(Integer result) {
            // do something with the result
        }

    });
}
executor.shutdown();
while (!executor.isTerminated()) {
    executor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
}
于 2013-08-14T09:00:46.683 に答える