Java之异步回调

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java之异步回调相关的知识,希望对你有一定的参考价值。


Java之异步回调

Future 设计的初衷: 对将来的某个事件的结果进行建模

Java之异步回调_并发编程

/** 
* 异步调用: 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之异步回调_Code_02


以上是关于Java之异步回调的主要内容,如果未能解决你的问题,请参考以下文章

Future 异步回调 大起底之 Java Future 与 Guava Future

如何优雅的处理Nodejs中的异步回调

进阶学习5:JavaScript异步编程——同步模式异步模式调用栈工作线程消息队列事件循环回调函数

Java-NIO 之 Buffer 与 Channel

JavaScript 异步操作之回调函数

Tornado异步之-协程与回调