111 CompletableFuture 详解

CompletableFuture类实现了CompletionStage和Future接口。Future是Java 5添加的类,用来描述一个异步计算的结果,可是获取一个结果时方法较少,要么经过轮询isDone,确认完成后,调用get()获取值,要么调用get()设置一个超时时间。可是这个get()方法会阻塞住调用线程,这种阻塞的方式显然和咱们的异步编程的初衷相违背。
为了解决这个问题,JDK吸取了guava的设计思想,加入了Future的诸多扩展功能造成了CompletableFuture。编程

  1. thenApply 进行变换  
  2. thenAccept 进行消耗  
  3. thenRun 对上一步的计算结果不关心,执行下一个操做。
  4. thenCombine 结合两个CompletionStage的结果,进行转化后返回
  5. thenAcceptBoth 结合两个CompletionStage的结果,进行消耗
  6. runAfterBoth 在两个CompletionStage都运行完执行。
  7. applyToEither 两个CompletionStage,谁计算的快,我就用那个CompletionStage的结果进行下一步的转化操做。
  8. acceptEither 两个CompletionStage,谁计算的快,我就用那个CompletionStage的结果进行下一步的消耗操做。
  9. runAfterEither 两个CompletionStage,任何一个完成了都会执行下一步的操做(Runnable)
  10. exceptionally 当运行时出现了异常,能够经过exceptionally进行补偿。
  11. whenComplete 当运行完成时,对结果的记录。这里的完成时有两种状况,一种是正常执行,返回值。另一种是遇到异常抛出形成程序的中断。这里为何要说成记录,由于这几个方法都会返回CompletableFuture,当Action执行完毕后它的结果返回原始的CompletableFuture的计算结果或者返回异常。因此不会对结果产生任何的做用。app

  12. handle运行完成时,对结果的处理。这里的完成时有两种状况,一种是正常执行,返回值。另一种是遇到异常抛出形成程序的中断。异步

 

https://www.jianshu.com/p/6f3ee90ab7d3异步编程

https://www.jianshu.com/p/6ee694cfb54bspa

 

20 个使用 Java CompletableFuture 的例子

 ***************  https://mp.weixin.qq.com/s/R2tLbygElx0jzB2DIGdL2Q线程

相关文章
相关标签/搜索