CompletableFuture 异步编程
文章目录
一、Future
Futrue接口是Java5引入。Future 的get方法会阻塞,直至得到一个返回结果。
1.1 get方法和join方法
get方法和join方法功效一样,差异在:future.get()方法会抛出受检异常,future.join() 方不会抛出受检异常;
ExecutorService executorService = Executors.newCachedThreadPool();
Future<Double> future = executorService.submit(new Callable<Double>() {
@Override
public Double call() throws Exception {
return createValue();
}
});
doSomthing();
try {
// 阻塞,直至得到返回结果
Double v = future.get();
System.out.println(v);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
二、CompletableFuture
CompletableFuture是Future的实现,Java8中引入。
2.1 入门示例
(1)示例一
这种情况下,发生错误。如果在外面调用futer.get() 将一直阻塞
public Future<Double> getPriceSync(String product) {
CompletableFuture<Double> future = new CompletableFuture<>();
new Thread(()->{
double re

本文详细探讨了Java中的CompletableFuture,作为Future接口的实现,它提供了丰富的异步编程能力。从Future的get和join方法的区别,到CompletableFuture的入门示例,包括异常处理和工厂类版本。接着,通过CompartableFuture与串行流、并行流的性能比较,揭示了在不同场景下选择使用ComputableFuture的策略。最后,建议根据计算密集型操作和涉及I/O的情况来决定使用并行流还是ComputableFuture。
最低0.47元/天 解锁文章
169万+

被折叠的 条评论
为什么被折叠?



