谈谈你对CompletableFuture类的理解

概念

CompletableFuture是jdk1.8引入的一个基于事件驱动的一个异步回调类。

比如在一个批量支付的业务逻辑里面,涉及到查询订单/支付和发送邮件通知这三个逻辑,那么这三个逻辑是按照顺序逻辑同步去实现的。这种设计方式会导致这个方法的执行效率会比较慢。

所以这里可以直接使用CompletableFuture,比如把查询订单的逻辑放在一个异步线程里面去处理,然后基于CompletableFuture的一个事件回调机制,可以配置查询订单结束之后的一个触发支付的一个动作。支付结束之后再自动触发邮件通知。从而极大提升了这个业务场景的处理性能。

CompletableFuture提供了五种不同的方式把多个异步任务组成一个具有先后关系的处理链。然后基于事件来驱动任务链的一个执行。

CompletableFuture的使用

thenCombine

它是把两个任务组合在一起,当两个任务都执行结束以后触发某个事件的回调。

谈谈你对CompletableFuture类的理解_第1张图片

thenCompose

把两个任务组合在一起,这两个任务是串行执行的,第一个任务执行完成后自动去触发第二个任务。

谈谈你对CompletableFuture类的理解_第2张图片

thenAccept

第一个任务执行完成后自动去触发第二个任务,并且第一个任务的执行结果作为第二个的参数。纯粹接收上一个任务的执行结果不返回新值的一个计算。

谈谈你对CompletableFuture类的理解_第3张图片

thenApply

和thenAccept一样,它具有返回值。

谈谈你对CompletableFuture类的理解_第4张图片

thenRun

第一个任务执行完成以后触发执行一个实现了Runnable接口的一个任务。

谈谈你对CompletableFuture类的理解_第5张图片

CompletableFuture弥补了原本Future的不足,使程序可以在非阻塞的状态下去完成异步的一个回调机制。

你可能感兴趣的:(多线程jucjava)