假设我有一个未来对象的列表<代码>列表
List<Data> list=new ArrayList();
for(Future future:futures){
list.addAll(future.get());
}
return list.steam();
但此方法必须等待所有期货返回,然后才能返回流
我想让它像管道一样工作,上层从流中提取数据并根据需要进行处理,无需等待所有的未来完成。
你想要这样的东西吗?
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的构造器用于这些事情,所以我尝试(作为一个例子): 结果让我有点