如何创建一个永远等待的CompletableFuture?

时间:2018-08-07 22:25:39

标签: java concurrency

我想用一种方法返回CompletableFuture,只有在用结果值调用该对象的第二种方法时,该方法才能成功,类似

public class Foo {
   private CompletableFuture<String> f;

   public CompletableFuture<String> method1() {
      f = CompletableFuture.waitForever???
      return f; 
   }

   public void method2(String s) {
      if (f != null) { 
         f.complete(s);
      }
   } 
}

这可能吗?我是否忽略了一种不太疯狂的方式?

1 个答案:

答案 0 :(得分:0)

CompletableFuture#get()将永远等待直到完成

来自文档

  

等待此将来完成,然后返回其   结果。

这就是为什么有get(long timeout, TimeUnit unit)允许超时的原因

  

如果有必要,最多等待给定时间以等待此未来   完成,然后返回其结果(如果有)。