类 FutureCombiner

java.lang.Object
cn.wjybxx.concurrent.FutureCombiner

public class FutureCombiner extends Object
在调用选择方法之前,你可以添加任意的IFuture以进行监听。 调用任意的选择方法后,当前combiner无法继续选择(理论上可以做到支持,但暂时还无需求 -- 主要还是开销大)。
作者:
wjybxx date 2023/4/12
  • 构造器详细资料

    • FutureCombiner

      public FutureCombiner()
  • 方法详细资料

    • add

      public FutureCombiner add(ICompletionStage<?> future)
    • addAll

      public FutureCombiner addAll(ICompletionStage<?>... futures)
    • addAll

      public FutureCombiner addAll(Collection<? extends ICompletionStage<?>> futures)
    • futureCount

      public int futureCount()
      获取监听的future数量 注意:future计数是不去重的,一个future反复添加会反复计数
    • setAggregatePromise

      public FutureCombiner setAggregatePromise(IPromise<Object> aggregatePromise)
      设置接收结果的Promise 如果在执行操作前没有指定Promise,将创建Promise实例。
      返回:
      this
    • clear

      public void clear()
      重置状态,使得可以重新添加future和选择
    • anyOf

      public IPromise<Object> anyOf()
      返回的promise在任意future进入完成状态时进入完成状态 返回的promise与首个完成future的结果相同(不准确)
    • selectN

      public IPromise<Object> selectN(int successRequire, boolean failFast)
      成功N个触发成功 如果触发失败,只随机记录一个Future的异常信息,而不记录所有的异常信息

      1.如果require等于【0】,则必定会成功。 2.如果require大于监听的future数量,必定会失败。 3.如果require小于监听的future数量,当成功任务数达到期望时触发成功。

      如果lazy为false,则满足成功/失败条件时立即触发完成; 如果lazy为true,则等待所有任务完成之后才触发成功或失败。

      参数:
      successRequire - 期望成成功的任务数
      failFast - 是否在不满足条件时立即失败
    • selectAll

      public IPromise<Object> selectAll()
      要求所有的future都成功时才进入成功状态 一旦有任务失败则立即失败
    • selectAll

      public IPromise<Object> selectAll(boolean failFast)
      要求所有的future都成功时才进入成功状态; 任意任务失败,最终结果都表现为失败
      参数:
      failFast - 是否在不满足条件时立即失败