如何在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();