get()方法在Futrue计算完成之前会一直处在阻塞状态下,
isDeone()方法容易耗费CPU资源,
对于真正的异步处理我们希望是可以通过传入回调函数,在Futrue结束时自动调用该回调函数,这样,我们就不用等待结果。
阻塞的方式和异步编程的设计理念相违背,而轮询的方式会耗费无谓的CPU资源。因此,
JDK8设计出CompletableFutrue。
CompletableFutrue提供了一种观察者模式类似的机制,可以让任务执行完成后通知监听的一方。
- CompletionStage
CompletionStage代表异步计算过程中的某一个阶段,一个阶段完成以后可能会触发另外一个阶段,有些类似Linux系统的管道分隔符传参数
-
- 一个阶段的计算执行可以是一个Fuction,Consumer或者Runable。
- 一个阶段的执行可能是被单个阶段的完成触发,也可能是由多个阶段一起触发