当前位置: 首页 > 知识库问答 >
问题:

如何在不调用Future的情况下将Future转换为流。收到

公孙弘图
2023-03-14

假设我有一个未来对象的列表<代码>列表

List<Data> list=new ArrayList();
for(Future future:futures){
    list.addAll(future.get());
}
return list.steam();

但此方法必须等待所有期货返回,然后才能返回流
我想让它像管道一样工作,上层从流中提取数据并根据需要进行处理,无需等待所有的未来完成。

共有1个答案

宿建本
2023-03-14

你想要这样的东西吗?

List<Future<List<Data>>> futures;
return futures.stream().flatMap(future->future.get().stream());

只有在实际使用它们时才会运行map()flatMap()

这样,您就不会避免get()调用,但它只在您使用它的时候被调用。

 类似资料:
  • 在我的应用程序中,我正在将java.concurrent.future转换为Twitter Future,如下所示: 这是正确的做法吗,或者有更好的方法吗?

  • 问题内容: Java 8引入了可组合的Future的新实现(包括一堆thenXxx方法)。我想专门使用它,但是我想使用的许多库仅返回非可组合实例。 有没有一种方法可以将返回的实例包装在内,以便我可以编写它? 问题答案: 有一种方法,但是您不喜欢它。以下方法将a 转换为a : 显然,这种方法的问题在于,对于每个 Future ,都会阻塞线程以等待 Future 的结果-与 Future 的想法相矛盾

  • 在我的项目中,我有一个Akka层,它返回一个,接收Future的部分是Java风格。 团队中的人不了解Scala,他们宁愿使用,因为他们更了解Java 8 API。 有没有什么好方法可以将一个转换成一个?。 显然是以非阻塞的方式。 当做

  • 我想将下面方法的返回类型更改为< code>Future[Unit] 我使用的是Scala 2.12.1。是否有任何方便的方法可以将Java 8<code>CompletableFuture

  • 如何在Scala中调试代码?

  • 我在用org。乔达。时间LocalDate和LocalDateTime。我从外部源获得一个Unix时间戳,并希望从中生成一个LocalDate(时间)。关键是,在该外部系统的界面中定义,所有日期/时间都在UTC时区内。因此,我希望避免从该时间戳到本地系统的任何默认时区的任何隐式转换,这可能与UTC不同。有一个LocalDateTime的构造器用于这些事情,所以我尝试(作为一个例子): 结果让我有点