首页 > 基础资料 博客日记
JUC并发编程学习笔记(十四)异步回调
2023-11-06 19:01:36基础资料围观211次
这篇文章介绍了JUC并发编程学习笔记(十四)异步回调,分享给大家做个参考,收藏Java资料网收获更多编程知识
异步回调
Future设计的初衷:对将来的某个事件的结果进行建模
在Future类的子类中可以找到CompletableFuture,在介绍中可以看到这是为非异步的请求使用一些异步的方法来处理
点进具体实现类中,查看方法,可以看到CompletableFuture中的异步内部类,里面是实现的异步方法
以及一些异步方法
通过CompletableFuture可以实现与Ajax一样的异步调用。
package org.example.asyn;
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 {
CompletableHasReturn() ;
}
public static void CompletableNotReturn() throws ExecutionException, InterruptedException {
//没有返回值的异步回调
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
try {
TimeUnit.SECONDS.sleep(3);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
System.out.println("执行异步请求完毕");
});
for (int i = 0; i < 5; i++) {
TimeUnit.SECONDS.sleep(1);
System.out.println(i);
}
//获取回调结果
future.get();
}
public static void CompletableHasReturn() throws ExecutionException, InterruptedException {
//有返回值的异步回调
CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> {
int i = 10/0;
return 1024;
});
System.out.println(future.whenComplete((t, u) -> {//编译
System.out.println("t:" + t);//t是正常的返回结果
System.out.println("u:" + u);//u是报错信息
}).exceptionally((e) -> {//编译异常 /Exception e
e.printStackTrace();
return 123;//异常返回结果
}).get());//获取回调结果
}
}
文章来源:https://www.cnblogs.com/nhgtx/p/17806027.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签: