一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第16天,点击查看活动详情。
前言
在聊CompletableFuture 特性之前,我们可以回顾下线程有关的知识。Thread,Runnable,Callable, 线程池原理, 阻塞队列,Future和FutureTask等等。CompletableFuture 顾名思义是 Future 的改进,可以通过传入回调对象,在任务完成后调用之。
CompletableFuture
Future和FutureTask可以用来获取异步线程执行的结果,但是Future其实是存在缺陷的,1、 get方法会阻塞 ,2、不支持注册回调方法 ,3、不支持级联操作。
CompletableFuture为这些问题都提供了对应的api解决方案。
场景
我们平时开发的过程中,不管你是基础组件的开发,还是业务代码的开发都会遇到并发的问题,有些是无状态的我们不需要返回值,直接实现Runable接口就好了,但是很多的场景是有依赖关系的,需要知道每个线程执行返回的结果。