CompletableFuture
概述
1、用于异步编程,非阻塞
(1)使得任务单独运行在与主线程分离的其他线程中
(2)通过回调,可以在主线程中得到异步任务的执行状态,是否完成,是否异常等信息
2、实现 Future、CompletionStage 接口
(1)实现 Future 接口:兼容现在有线程池框架
(2)实现 CompletionStage 接口:异步编程的接口抽象,定义多种异步方法
Future
1、通常表示一个异步任务的引用
2、整体是同步的,因为需要客户端不断阻塞等待,或者不断轮询才能知道任务是否完成
3、不支持手动完成
(1)提交一个任务,但是执行太慢
(2)通过其他路径已经获取到任务结果,无法把这个任务结果通知到正在执行的线程
(3)必须主动取消或一直等待它执行完成
4、不支持进一步的非阻塞调用
(1)通过 Future 的 get 方法,会一直阻塞到任务完成
(2)但要在获取任务之后,执行额外的任务,因为 Future 不支持回调函数,所以无法实现这个功能
5、不支持链式调用
(1)对于 Future 的执行结果,无法继续传到下一个 Future 处理使用
(2)即无法形成一个链式的 pipline 调用
6、不支持多个 Future 合并
7、不支持异常处理
(1)Future 没有任何处理异常的 API
(2)在异步运行时发生异常时,无法定位问题
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战