Java 8:CompletableFuture

  1. 解决 Future无法描述多个Future结果间的依赖性的问题
    1. 一个大任务中,多个小任务是相互依赖的,没有组合各个小任务的结果,没法得到大任务。
    2. 两个任务之间存在 顺序,产生依赖
  2. 功能
    1. 流式处理 - CompletionStage 中提供大量接口供流式调用

    2. 提供解决异步执行任务的静态方法 (4个)

      1. 无返回值静态方法(2个),有返回值静态方法(2个),在方法中可设置 线程池
        1. 异步执行线程,默认线程在ForkJoinPool.commonPool()系统级公共线程池中,可设置。
      2. 调用 CompletableFuture.get()方法,获取异步任务的结果。(运行速度快可以获得,否则阻塞)
      3. 出现 异常怎么处理?
    3. 提供异常处理

      1. 利用函数式风格,提供 exceptionally() 处理异常
    4. 组合任务

      1. 一个 CompletableFuture 可以在执行完成后,将执行结果通过 Function 传递给下一个 CompletionStage 进行处理。
      2. 方法 thenCombime() 首先完成当前 CompletableFuture 和 other 的执行。接着,将这两者的执行结果传递给 BiFunction(该接口接收两个参数,并有一个返回值),并返回代表 BiFunction 实例的 CompletableFuture 对象:
      // 依赖前一组任务的结果
      public <U> CompletableFuture<U> thenCompose(Function<? super T, ? extends CompletionStage<U>> fn)
      // 组合结果
      public <U,V> CompletableFuture<U> thenCombime
      ( CompletionStage<? extends U> other, BiFunction<? super T, ? super U,? extends V> fn)
      
    5. end

  3. end

参考来源 : Java8 CompletableFuture

猜你喜欢

转载自blog.csdn.net/ai_shuyingzhixia/article/details/82824433