Questions tagged «future»

计算完成前占位符。用于并发编程。有关未来事件的问题不在Stack Overflow上。



11
等待未来的清单
我有一种返回List期货的方法 List<Future<O>> futures = getFutures(); 现在,我要等到所有期货都成功完成处理,或者期货输出返回的任何任务都抛出异常。即使一项任务引发异常,也没有必要等待其他期货。 简单的方法是 wait() { For(Future f : futures) { try { f.get(); } catch(Exception e) { //TODO catch specific exception // this future threw exception , means somone could not do its task return; } } } 但是这里的问题是,例如,如果第4个期货抛出异常,那么我将不必要地等待前3个期货可用。 如何解决呢?会以任何方式倒计时闩锁帮助吗?我无法使用Future,isDone因为Java文档说 boolean isDone() Returns true if this …

1
期货与承诺
我将自己与未来和承诺之间的差异弄混了。 显然,它们具有不同的方法和内容,但是实际用例是什么? 是吗?: 当我管理一些异步任务时,我使用future来获取“ future”的值 当我是异步任务时,我使用promise作为返回类型,以允许用户从我的promise中获得未来
134 c++  c++11  promise  future 

6
Scala:忽略失败的期货,将[未来]列出到[期货]
我正在寻找一种将任意长度的Future列表转换为List的Future的方法。我正在使用Playframework,所以最终,我真正想要的是一个Future[Result],但是为了简化起见,我们可以说Future[List[Int]]通常的做法是使用它,Future.sequence(...)但是有一点曲折...通常我给出的列表有大约10到20种期货,而且其中一种期货失败(他们正在提出外部Web服务请求)并不罕见。如果希望其中一个失败,则不必重试所有这些,而是​​希望能够找到成功的并返回它们。 例如,执行以下操作无效 import scala.concurrent._ import scala.concurrent.ExecutionContext.Implicits.global import scala.util.Success import scala.util.Failure val listOfFutures = Future.successful(1) :: Future.failed(new Exception("Failure")) :: Future.successful(3) :: Nil val futureOfList = Future.sequence(listOfFutures) futureOfList onComplete { case Success(x) => println("Success!!! " + x) case Failure(ex) => println("Failed !!! " + ex) } scala> Failed !!! java.lang.Exception: Failure 除了希望获得唯一的例外,我还希望能够将1和3从那里拉出来。我尝试使用Future.fold,但显然只是Future.sequence在后台调用。 …
116 scala  future 

6
将Java Future转换为CompletableFuture
Java 8引入 CompletableFuture了可组合的Future的新实现(包括一堆thenXxx方法)。我想专门使用此库,但是我要使用的许多库仅返回非组合库Future实例。 有没有一种方法可以将返回的Future实例包装到内,CompleteableFuture以便我可以编写它?
92 java  java-8  future 


8
如何等待几个期货?
假设我有几个期货,需要等到其中任何一个失败或全部成功。 例如:让我们有3个期货:f1,f2,f3。 如果f1成功f2失败,我就不会等待f3(并将失败返回给客户端)。 如果f2在运行期间失败f1并且f3仍在运行,则不要等待它们(并返回failure) 如果f1成功,然后f2成功,我继续等待f3。 您将如何实施?

6
如何在Java中创建完整的未来
用Java构建完整的未来的最佳方法是什么?我在CompletedFuture下面实现了自己的实现,但是希望已经存在这样的东西。 public class CompletedFuture<T> implements Future<T> { private final T result; public CompletedFuture(final T result) { this.result = result; } @Override public boolean cancel(final boolean b) { return false; } @Override public boolean isCancelled() { return false; } @Override public boolean isDone() { return true; } @Override public T get() …
82 java  future 



6
C#中的Promise等效项
在Scala中,有一个Promise类可用于手动完成Future。我正在寻找C#中的替代方法。 我正在编写一个测试,并且希望它看起来像这样: // var MyResult has a field `Header` var promise = new Promise<MyResult>; handlerMyEventsWithHandler( msg => promise.Complete(msg); ); // Wait for 2 seconds var myResult = promise.Future.Await(2000); Assert.Equals("my header", myResult.Header); 我知道这可能不是C#的正确模式,但是即使模式有所不同,我也无法找出实现相同目标的合理方法。 编辑:请注意,async/await在这里没有帮助,因为我没有等待的任务!我只有访问将在另一个线程上运行的处理程序的权限。

5
为什么要使用std :: async?
在尝试使用std :: async并阅读其定义的同时,我试图深入探索新C ++ 11标准的所有选项,我注意到至少在gcc 4.8.1的Linux下有两件事: 它称为async,但它确实具有“顺序行为”,基本上在您调用与async函数foo相关联的future的行中,该程序将阻塞直到foo执行完毕。 它取决于与其他库完全相同的外部库以及更好的非阻塞解决方案,这意味着pthread,如果要使用std::async,则需要pthread。 在这一点上,我很自然地问为什么甚至在一组简单的函子上都选择std :: async?该解决方案甚至根本无法扩展,您调用的未来越多,程序的响应性就越差。 我想念什么吗?您能否显示一个示例,该示例被授予以异步,非阻塞方式执行?


3
Scala中的带有期货的异步IO
假设我要从一些URL下载一个(可能很大)图像列表。我正在使用Scala,所以我要做的是: import scala.actors.Futures._ // Retrieve URLs from somewhere val urls: List[String] = ... // Download image (blocking operation) val fimages: List[Future[...]] = urls.map (url => future { download url }) // Do something (display) when complete fimages.foreach (_.foreach (display _)) 我对Scala有点陌生,所以对我来说,这仍然有点像魔术: 这是正确的方法吗?如果不是,还有其他选择吗? 如果我要下载100张图像,这会一次创建100个线程,还是会使用线程池? 最后一条指令(display _)是否会在主线程上执行,否则,如何确定? 谢谢你的建议!
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.