在juc里面有一个神奇的类—— CompletableFuture,他就像AJAX一样可以实现异步回调,可以设置有无返回结果。具体操作如下:
//无返回结果
CompletableFuture<Void> completableFuture=CompletableFuture.runAsync(()->{
try {
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"runasync");
});
System.out.println("other thead");
completableFuture.get();
//有返回值
CompletableFuture<Integer> completableFuture=CompletableFuture.supplyAsync(()->{
try {
TimeUnit.SECONDS.sleep(2);
int i=10/0;
} catch (InterruptedException e) {
e.printStackTrace();
}
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());