使用Guava FutureCallback接口的Java多线程编程

普里利亚

我的问题与Java多线程编程有关。
我正在处理创建许多工作人员的主线程,每个工作人员都是一个线程。
为了获得从工作人员到主线程的结果/错误,我将其与Callable和Future一起使用。
我确实在番石榴的FutureCallback接口中找到了从worker中获取异常的方法。
我的问题是如何使用它,因为在网上没有找到任何示例。

谢谢 !

本尼赫普

这是带有整数结果的示例:

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);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章