如何在java中创build完整的未来

在Java中构build完整的未来的最佳方式是什么? 我已经实施了我自己的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() throws InterruptedException, ExecutionException { return this.result; } @Override public T get(final long l, final TimeUnit timeUnit) throws InterruptedException, ExecutionException, TimeoutException { return get(); } } 

Apache Commons Lang定义了一个名为ConstantFuture的类似实现,你可以通过调用:

 Future<T> future = ConcurrentUtils.constantFuture(T myValue); 

在Java 8中,您可以使用内置的CompletableFuture:

  Future future = CompletableFuture.completedFuture(value); 

番石榴定义Futures.immediateFuture(value) ,这工作。

我在Java rt.jar中find了和你类似的类

com.sun.xml.internal.ws.util.CompletedFuture

它允许你指定一个可以在调用get()时抛出的exception。 如果你不想抛出exception,只需将其设置为null。

在Java 6中,您可以使用以下内容:

 Promise<T> p = new Promise<T>(); p.resolve(value); return p.getFuture();