Java之异步回调
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java之异步回调相关的知识,希望对你有一定的参考价值。
Java之异步回调
Future 设计的初衷: 对将来的某个事件的结果进行建模
/**
* 异步调用: 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());
);
//completableFuture.get(); // 获取阻塞执行结果
// 这里的get是获得 执行完后的返回值,这里的返回值为void,所以打印出来的结果是null,
// 可以理解为get就是获得返回值,如果在get的时候方法还没执行完就会等待执行,而不是get的时候才开始执行
System.out.println("111111111");
completableFuture.get();
*/
// 异步是目的,而多线程是实现它的方法
// 有返回值的 supplyAsync 异步回调
// ajax,成功和失败的回调
// 返回的是错误信息
CompletableFuture<Integer> completableFuture = CompletableFuture.supplyAsync(()->
int i = 10/0;
return 1024;
);
completableFuture.whenComplete((t,u)->
System.out.println("t=>"+t); // 正常的返回结果
System.out.println("u=>"+u); // 错误信息,没错误null
).exceptionally((e)->
e.printStackTrace(); // 打印堆栈信息
System.out.println(e.getMessage()); // 打印错误日志
// 失败了返回233
return 233;
.get());
/**
* succee Code 200
* error Code 404 500
*/
以上是关于Java之异步回调的主要内容,如果未能解决你的问题,请参考以下文章
Future 异步回调 大起底之 Java Future 与 Guava Future