13_CompletableFuture异步回调
Posted root_zhb
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了13_CompletableFuture异步回调相关的知识,希望对你有一定的参考价值。
CompletableFuture异步回调
1、简介
CompletableFuture 在 Java 里面被用于异步编程,异步通常意味着非阻塞,可以使得我们的任务单独运行在与主线程分离的其他线程中,并且通过回调可以在主线程中得到异步任务的执行状态,是否完成,和是否异常等信息。
CompletableFuture 实现了 Future, CompletionStage 接口,
Future接口就可以兼容现在有线程池框架,
CompletionStage 接口才是异步编程的接口抽象,里面定义多种异步方法
2、Future 与 CompletableFuture
Future缺点:
- 不支持手动完成
我提交了一个任务,但是执行太慢了,我通过其他路径已经获取到了任务结果,现在没法把这个任务结果通知到正在执行的线程,所以必须主动取消或者一直等待它执行完成 - 不支持进一步的非阻塞调用
通过 Future 的 get 方法会一直阻塞到任务完成,但是想在获取任务之后执行额外的任务,因为 Future 不支持回调函数,所以无法实现这个功能 - 不支持链式调用
对于 Future 的执行结果,我们想继续传到下一个 Future 处理使用,从而形成一个链式的 pipline 调用,这在 Future 中是没法实现的。 - 不支持多个 Future 合并
比如我们有 10 个 Future 并行执行,我们想在所有的 Future 运行完毕之后,执行某些函数,是没法通过 Future 实现的。 - 不支持异常处理
Future 的 API 没有任何的异常处理的 api,所以在异步运行时,如果出了问题是不好定位的。
3、代码
可以先参考 https://blog.csdn.net/TZ845195485/article/details/114692426
近期有别的任务,过段时间重新回来。
以上是关于13_CompletableFuture异步回调的主要内容,如果未能解决你的问题,请参考以下文章
牛逼啊!异步神器:CompletableFuture实现原理和使用场景
CompletableFuture异步编排(计算完成回调代码示例)