die*_*n07 11 java concurrency java.util.concurrent java-8
今天我尝试了CompletableFutureJava 8中的"new" ,当我找不到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;
}Run Code Online (Sandbox Code Playgroud)
你应该使用 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
| 归档时间: |
|
| 查看次数: |
6903 次 |
| 最近记录: |