Future 设计的初衷: 对将来的某个事件的结果进行建模

java
package com.mystpet.yibuhuijiao;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
public class Demo01 {
public static void main(String[] args) throws ExecutionException, InterruptedException {
// 没有返回值的 runAsync 异步回调
// CompletableFuture<Void> completableFuture=CompletableFuture.runAsync(()->{
// // 模拟耗时操作,比如等2秒
// try{
// TimeUnit.SECONDS.sleep(2);
// } catch (InterruptedException e) {
// throw new RuntimeException(e);
// }
// System.out.println(Thread.currentThread().getName());
// });
//
// System.out.println("1111");
// completableFuture.get(); // 获取执行结果
// 有返回值的 supplyAsync 异步回调
// ajax,成功和失败的回调
// 返回的是错误信息;
CompletableFuture<Integer> completableFuture= CompletableFuture.supplyAsync(() -> {
System.out.println(Thread.currentThread().getName()+"supplyAsync=>Interger");
int i=10/0;
return 1024;
});
System.out.println(completableFuture
.whenComplete((t,u)->{ //成不成功。都知道结果
System.out.println("t="+t);
System.out.println("u="+u);
}).exceptionally(e->{ //失败了该怎么做
System.out.println(e.getMessage()); //查看失败的错误信息
return 233;
})
.get());
}
}