- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道使用 ListenableFuture+addCallback()
而不是 invokeAll()
有什么好处,以防我只对获取所有结果感兴趣一次完成任务。
invokeAll()
是否隐藏了任何抛出的异常?如果我正在使用 invokeAll()
,我还需要处理其他事情吗,因为 addCallback()
提供了 onSuccess()
和 onFailure()
方法,但 invokeAll()
没有此类功能。
提前致谢!
最佳答案
使用 ListenableFuture
,您可以提交任意数量的任务,然后将这些任务中的 ListenableFuture
传递给 Futures.allAsList
,获取另一个 ListenableFuture
,它将在 所有 任务完成时完成。还有 Futures.successfulAsList
,即使某些任务失败也会成功,并为每个失败的任务提供 null
结果。
然后,您可以阻塞当前线程以等待这些结果(使用普通的 Future.get()
),或者您可以添加一个监听器/回调,以便在它们完成时调用你不想/不需要阻塞当前线程。
例子:
ListeningExecutorService executor = ...
List<Callable<Foo>> tasks = ...
List<ListenableFuture<Foo>> futures = Lists.newArrayList();
for (Callable<Foo> task : tasks) {
futures.add(executor.submit(task));
}
final ListenableFuture<List<Foo>> resultsFuture
= Futures.allAsList(futures);
// block until all tasks are done
List<Foo> results = resultsFuture.get();
// or add a callback to get called when the tasks complete
Futures.addCallback(resultsFuture, new FutureCallback<List<Foo>>() {
@Override public void onSuccess(List<Foo> results) {
// ...
}
@Override public void onFailure(Throwable throwable) {
// ...
}
}, someExecutor);
关于java - invokeAll() vs Guava ListenableFuture+addCallback(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17887124/
我正在寻找转换 ListenableFuture> 的最佳方法进入个体序列ListenableFutures .这是我正在寻找的方法签名: public Iterable> splitAndRun(
如果在主题上成功发布了学生,我想将StudentDto返回给控制器。但因为onSuccess是在响应返回给控制器之后调用的。如果StudentDto成功发布,我有什么方法可以将其返回到。。如果在主题上
首先我只想说我是 akka 和 Futures 的新手。所以要温柔:)。 我在某个类中有 init 方法,它返回 ListenableFuture 。这个方法应该在单独的线程中执行一些耗时的代码,并创
我对 Futures 很陌生,并且陷入了链接调用和创建对象列表的困境。我使用的是 Android,API 最小值为 19。 我想编写下面的方法getAllFoo(): ListenableFuture
我第一次尝试使用ListenableFutues,在使用addCallback方法时出现错误,请帮忙。 附件是代码的快照。错误是: error: expected Futures.add
在向 ExecutorService 提交任务时,使用 ListenableFuture 处理结果是否有任何优势,而不是通过简单地调用处理该任务的函数来以普通的旧 java 方式进行处理?结果? fu
我有一个 Spring Cloud 微服务,它在 Kafka 代理上发布消息,该微服务可通过 REST API 访问。 我想将提交状态返回给调用者,但似乎 Java 不等待。如何使其在我的代码返回之前
我正在使用 Spring 4.2.3 AsyncRestTemplate.exchange() 调用一些需要几秒钟的 API,我希望 listenableFuture.get(1, TimeUnit.
有一个服务使用 Spring AsyncRestTemplate 来发送 rest 调用。每次调用 AsyncRestTemplate.exchange() 都会返回 ListenableFuture
我想使用 apache 异步 http 客户端进行异步 http 调用,以便每个线程运行多个调用。 此处列出了代码:https://hc.apache.org/httpcomponents-async
有没有一种简单的方法(提供库)来组合两个 com.google.common.util.concurrent.ListenableFuture并从第一个完成的结果中获取结果。 类似于 coalesce
我正在编写一个 Controller ,我需要使其异步。我如何处理 ListenableFuture 的列表?因为我有一个 URL 列表,需要一一发送 GET 请求,那么最好的解决方案是什么? @Re
有一个服务使用 Spring AsyncRestTemplate 来发送 rest 调用。每次调用 AsyncRestTemplate.exchange() 都会返回 ListenableFuture
我正在读取一个大的 URL 文件并向服务发出请求。该请求由返回 ListenableFuture 的客户端执行。现在我想保留一个 ListenableFuture 池,例如最多同时执行 N 个 Fut
当使用 Guava 的 ListenableFuture 时,如何知道失败的任务。示例 FutureCallback future = new FutureCallback() { @Overri
我正在处理一个问题,我有一个 List> .我想将所有这些 future 的结果汇总成一个 List超时。天真的方法是这样的: List blockForResponses(List> futures
根据我看到的 Guava 示例,我一直在寻找优雅的解决方案来解决我的问题。具体来说,我喜欢 Futures.addCallback(ListenableFuture, FutureCallback)
我努力了,但没有找到任何文章或博客清楚地比较了 ListenableFuture 和 CompletableFuture,并提供了很好的分析。 所以如果有人能解释或指向我这样的博客或文章,那对我来说真
我正在尝试为 ListenableFuture 添加回调编写单元测试用例,但我不知道该怎么做。在互联网上没有得到任何有用的东西。 @Test public void can_publish_
我有一个专用的Stack S,里面装满了类外部的对象(使用方法)。 ListenableFuture应该读取堆栈并从中检索对象, 但是,如果堆栈为空,则应等待将对象插入到堆栈中,然后再检索它。我不确定
我是一名优秀的程序员,十分优秀!