来自Callable的CompletableFuture?

这些

今天,我尝试了CompletableFutureJava 8中的“新”功能,但在找不到runAsync(Callable)方法时感到困惑我可以按照如下所示自己完成操作,但是为什么缺少此方法(对我来说是非常明显和有用的实用程序方法)?上午失去了一些东西?

public static <T> CompletableFuture<T> asFuture(Callable<? extends T> callable, Executor executor) {
    CompletableFuture<T> future = new CompletableFuture<>();
    executor.execute(() -> {
        try {
            future.complete(callable.call());
        } catch (Throwable t) {
            future.completeExceptionally(t);
        }
    });
    return future;
}
ZhongYu

你应该使用 supplyAsync(Supplier<U>)

通常,lambda和受检查的异常不能很好地协同工作,并且CompletableFuture通过设计避免了受检查的异常。虽然在您的情况下应该没问题。

相关主题:

http://cs.oswego.edu/pipermail/concurrency-interest/2012-December/010486.html

http://cs.oswego.edu/pipermail/concurrency-interest/2014-August/012911.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

来自池的CompletableFuture重用线程

来自分类Dev

来自池的CompletableFuture重用线程

来自分类Dev

返回CompletableFuture <Void>或CompletableFuture <?>?

来自分类Dev

CompletableFuture supplyAsync

来自分类Dev

如何子类CompletableFuture?

来自分类常见问题

了解CompletableFuture简单实现

来自分类Dev

CompletableFuture的单独异常处理

来自分类Dev

取消CompletableFuture链

来自分类Dev

CompletableFuture,supplyAsync()和thenApply()

来自分类Dev

如何从CompletableFuture获取结果

来自分类Dev

CompletableFuture何时实际完成?

来自分类Dev

CompletableFuture.acceptEther

来自分类Dev

CompletableFuture儿童请求

来自分类Dev

与CompletableFuture意外的行为

来自分类Dev

单VS CompletableFuture

来自分类Dev

CompletableFuture用的PriorityBlockingQueue

来自分类Dev

CompletableFuture撰写例外

来自分类Dev

CompletableFuture和垃圾收集

来自分类Dev

CompletableFuture在Java8

来自分类Dev

具有超时的CompletableFuture

来自分类Dev

如何从CompletableFuture获取结果

来自分类Dev

从 Actor 运行 CompletableFuture

来自分类Dev

CompletableFuture thenCompose after 异常

来自分类Dev

CompletableFuture 的 Java 异步返回

来自分类Dev

Callable and Future返回异常

来自分类Dev

ScheduledExecutorService scheduleWithFixedDelay为Callable

来自分类Dev

为什么将CompletableFuture.allOf声明为CompletableFuture <Void>?

来自分类Dev

“重用” CompletableFuture是否安全/良好?

来自分类Dev

Java 8 CompletableFuture.thenApply()