让单独的 Thread() 完成 Future 有好处吗?
Is there a benefit of having a separate Thread() complete a Future?
我以为我理解了 Java8 介绍的 CompletableFuture 的目标。然后我读到:https://medium.com/swlh/completablefuture-a-simplified-guide-to-async-programming-41cecb162308
在本文中,开发人员在一个新线程中启动(或完成)一个 CompletableFuture,这与我无关。
有人可以解释一下,为什么有人会从单独的 Thread() 完成 CompletableFuture 中受益?
CompletableFuture<Double> futureResult = new CompletableFuture<>();
new Thread( ()-> {
try{
//some long process
futureResult.complete(10.0);
}catch(Exception e){
futureResult.completeExceptionally(e);
}
}).start();
return futureResult;
编辑:
正如评论中所指出的和接受的答案,不出所料,我的困惑源于我对 CompletableFuture 的误解。事后看来,似乎很明显,新的异步 activity 需要在某个地方启动,所以为什么不在新线程中启动,因为新的 activity 会阻塞?
Excellent,深入了解 CompletableFuture。
CompletableFuture 意味着它正在执行,所以当你提供一个时,你应该让它以某种方式启动。您的示例使用的 Thread 不能给您太多控制权。
如果您不在乎,您应该使用 CompletableFuture.completeAsync 来处理 executor/thread。
在提供的代码中,线程正在执行所有工作,然后 'completing' 未来。
我以为我理解了 Java8 介绍的 CompletableFuture 的目标。然后我读到:https://medium.com/swlh/completablefuture-a-simplified-guide-to-async-programming-41cecb162308
在本文中,开发人员在一个新线程中启动(或完成)一个 CompletableFuture,这与我无关。
有人可以解释一下,为什么有人会从单独的 Thread() 完成 CompletableFuture 中受益?
CompletableFuture<Double> futureResult = new CompletableFuture<>();
new Thread( ()-> {
try{
//some long process
futureResult.complete(10.0);
}catch(Exception e){
futureResult.completeExceptionally(e);
}
}).start();
return futureResult;
编辑: 正如评论中所指出的和接受的答案,不出所料,我的困惑源于我对 CompletableFuture 的误解。事后看来,似乎很明显,新的异步 activity 需要在某个地方启动,所以为什么不在新线程中启动,因为新的 activity 会阻塞?
Excellent,深入了解 CompletableFuture。
CompletableFuture 意味着它正在执行,所以当你提供一个时,你应该让它以某种方式启动。您的示例使用的 Thread 不能给您太多控制权。
如果您不在乎,您应该使用 CompletableFuture.completeAsync 来处理 executor/thread。
在提供的代码中,线程正在执行所有工作,然后 'completing' 未来。