前身 Future
作用
特点
- 多线程
- 有返回值
- 异步处理
实现类FutureTask
代码示例
public class FutureThread {
public static void main(String[] args) throws ExecutionException, InterruptedException {
FutureTask<String> futureTask = new FutureTask<>(new mythread2());
Thread t1 = new Thread(futureTask,"t1");
t1.start();
String s = futureTask.get();
System.out.println(s);
}
}
class mythread2 implements Callable<String>{
@Override
public String call() throws Exception {
System.out.println("come in deep dark fantasy!");
return "callable的返回值捏";
}
}
缺点
CompletableFuture
优点
- 回调通知执行结果,不会阻塞
- 异步执行
- 可以组合处理多个任务
- 对计算速度进行选用)
调用静态方法初始化
whenComplete回调方法
get和join的区别
- 二者的作用相同,都是获取CompletableFuture的返回值,但是get需要处理检查型异常,也就是必须抛出或者处理,而join则不用处理。
thenApply和handle(对计算结果进行处理)
相同点
- 计算结果存在依赖关系,串行化执行,需要上一个返回值来当成参数
不同点
- 当thenApply中出现异常时后续不再执行
- 当handler中出现异常时,后续不会受到影响,继续执行
thenAccept(计算结果病并消费、无返回结果)
thenRun、thenAccept、thenApply对比
thenRun和thenRunAsync区别(线程池运行选择)
applyToEither(对计算速度进行选用、谁快用谁)
thenCombine(对计算结果进行合并)
- 两个CompletionStage任务都完成后、最终能把两个任务的结果一起交给thenCombine来处理
原文地址:https://www.jb51.cc/wenti/3287923.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。