web-dev-qa-db-ja.com

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() throws InterruptedException, ExecutionException {
        return this.result;
    }

    @Override
    public T get(final long l, final TimeUnit timeUnit) throws InterruptedException, ExecutionException, TimeoutException {
        return get();
    }
}
66
Jake Walsh

Apache Commons Langは、ConstantFutureと呼ばれる同様の実装を定義しています。次の呼び出しで取得できます。

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

Java 8では、組み込みのCompletableFutureを使用できます。

 Future future = CompletableFuture.completedFuture(value);
162
Andrejs

GuavaFutures.immediateFuture(value) を定義し、ジョブを実行します。

35
Louis Wasserman