Future
Future设计的初衷:对将来的某个事件的结果进行建模
没有返回值的runAsync异步回调
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
/**
* 异步调用:CompletableFuture
* //异步执行
* //成功回调
* //失败回调
*/
public class Demo01 {
public static void main(String[] args) throws ExecutionException, InterruptedException {
//发起一个请求
//没有返回值的 runAsync 异步回调
CompletableFuture<Void> completableFuture = CompletableFuture.runAsync(()->{
try {
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "runAsync=>Void");
});
System.out.println("1111");
//获取阻塞执行结果
completableFuture.get();
}
}
有返回值的supplyAsync异步回调
没有异常的情况
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
/**
* 异步调用:CompletableFuture
* //异步执行
* //成功回调
* //失败回调
*/
public class Demo01 {
public static void main(String[] args) throws ExecutionException, InterruptedException {
//有返回值的 suppleAsync 异步回调
//ajax,成功和失败的回调
//失败返回的是错误信息
CompletableFuture<Integer> completableFuture = CompletableFuture.supplyAsync(()->{
System.out.println(Thread.currentThread().getName() + " runAsync=>Void");
//int i = 1/0;
return 1111;
});
System.out.println(completableFuture.whenComplete((t, u) -> {
System.out.println("t->" + t); //正常的返回结果 1111
System.out.println("u->" + u); //错误信息
}).exceptionally((e) -> {
System.out.println(e.getMessage());
return 0000; //可以获取到错误的返回结果
}).get());
/**
* succee Code 200
* error Code 404 500
*/
}
}
有异常的情况(int i = 1/0)
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
/**
* 异步调用:CompletableFuture
* //异步执行
* //成功回调
* //失败回调
*/
public class Demo01 {
public static void main(String[] args) throws ExecutionException, InterruptedException {
//有返回值的 suppleAsync 异步回调
//ajax,成功和失败的回调
//失败返回的是错误信息
CompletableFuture<Integer> completableFuture = CompletableFuture.supplyAsync(()->{
System.out.println(Thread.currentThread().getName() + " runAsync=>Void");
int i = 1/0;
return 1111;
});
System.out.println(completableFuture.whenComplete((t, u) -> {
System.out.println("t->" + t); //正常的返回结果 1111
System.out.println("u->" + u); //错误信息
}).exceptionally((e) -> {
System.out.println(e.getMessage());
return 0000; //可以获取到错误的返回结果
}).get());
/**
* succee Code 200
* error Code 404 500
*/
}
}