package yibu;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
/**
* @author admin
* @version 1.0.0
* @ClassName demo1.java
* @Description TODO
* @createTime 2021年06月01日 19:50:00
*/
public class demo1 {
/**
* 异步调用:CompletableFuture
* @param args
*/
public static void main(String[] args) throws Exception{
// 发起一个请求
// 没有返回值的异步回调runAsync
/* CompletableFuture<Void> completableFuture = CompletableFuture.runAsync(()->{
try {
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName());
});
*/
// 有返回值的异步回调 supplyAsync
// ajax 成功和失败的回调
// 失败返回的是错误信息
CompletableFuture<Integer> completableFuture = CompletableFuture.supplyAsync(()->{
System.out.println(Thread.currentThread().getName());
// 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 404; // 可以获取到错误的返回结果
}).get());
System.out.println(111);
}
}
【JUC编程进阶】异步回调
最新推荐文章于 2022-12-29 23:45:19 发布