CompletableFuture是Java8中引入用于处理异步编程的核心类,它引入了一种基于Future的编程模型,允许我们以更加直观的方式执行异步操作,并处理它们的结果或异常。Future的局限性学过Java并发或者接触过异步开发的小伙伴应该都知道Future,通过Future我们能够知道异步执行的操作结果,它提供了isDone()来检测异步是否已经完成,也可以通过get()方法来获取计算结果。在异步计算中,Future确实是一个非常优秀的接口,但是它依然存在一些局限性:缺乏回调机制:Future没有内置的回调机制,这就意味着我们必须轮询Future对象来检查任务是否完成,而不是等待通知。
上一章节中我们讲解了CompletableFuture的一些基本用法,比如如何使用和如何处理异步计算结果。本章节我们继续,主要讲解如何使用CompletableFuture来组合异步计算的结果组合FuturesCompletableFutureAPI最吸引人的部分,应该是能够在一系列链式计算步骤中组合CompletableFuture实例。这种链式的结果本身就是CompletableFuture,允许进一步链接和组合。这种方法在函数式语言中无处不在,通常被称为「一元(monadic)设计模式」。CompletableFuture提供了方法thenCompose()用于按顺序链接两个Future
本文我们来了解下Java8引入的CompletableFuture类,了解下该类提供的功能和用例。Java中的异步计算异步计算很难推理的,因为我们的大脑是同步的,会将任何计算看成是一系列的同步计算。我们在实现异步计算时,往往会把回调的动作分散在代码中或者深深地嵌套在彼此内部,这种情况下,当我们需要处理其中一个步骤中可能发生的错误时,情况变得更糟。人生的一大悲剧是,尽管Java5已经看到了这种恶性循环,提供了Future接口作为异步计算的结果,但它没有提供任何方法来组合这些计算或处理可能的错误。直到Java8,才引入了CompletableFuture类。该类不仅实现了Future接口,还实现了