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)在异步运行时发生异常时,无法定位问题

posted @   半条咸鱼  阅读(62)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示