Future 设计的初衷 :对将来的某个事件的结果进行建模
package com.xizi.异步回调;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
public class test {
public static void main(String[] args) throws ExecutionException, InterruptedException {
// //没有返回值的 runAsync 异步回调
// CompletableFuture completableFuture = CompletableFuture.runAsync(() -> {
// try {
// TimeUnit.SECONDS.sleep(2);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
// System.out.println(Thread.currentThread().getName() + "runAsync=>Void");
// });
// System.out.println("1111111111");
// completableFuture.get(); //获取阻塞执行结果
//有返回值 supplyAsync 异步回调
//ajax 成功和失败的回调
//返回错误的信息
CompletableFuture completableFuture = CompletableFuture.supplyAsync(() -> {
System.out.println(Thread.currentThread().getName() + "supplyAsync");
// 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 2333333;
}).get()
);
}
}