类 ParallelBranch<T>

java.lang.Object
cn.wjybxx.btree.Task<T>
cn.wjybxx.btree.BranchTask<T>
cn.wjybxx.btree.branch.ParallelBranch<T>
所有已实现的接口:
ICancelTokenListener
直接已知子类:
Join, ServiceParallel, SimpleParallel

public abstract class ParallelBranch<T> extends BranchTask<T>
并行节点基类 定义该类主要说明一些注意事项,包括: 1.不建议在子节点完成事件中再次驱动子节点,避免运行Task.execute()方法,否则可能导致其它task单帧内运行多次。 2.如果有缓存数据,务必小心维护。 3.并行节点都不能被内联
作者:
wjybxx date - 2023/11/26
  • 构造器详细资料

    • ParallelBranch

      public ParallelBranch()
    • ParallelBranch

      public ParallelBranch(List<Task<T>> children)
  • 方法详细资料

    • resetForRestart

      public void resetForRestart()
      从类复制的说明: Task
      重置任务以便重新启动(清理运行产生的所有临时数据)

      1. 和exit一样,清理的是运行时产生的临时数据,而不是所有数据;不过该方法是比exit更彻底的清理。 2. 钩子任务也应当被重置。 3. 与Task.beforeEnter()相同,重写方法时,应先执行父类逻辑,再重置自身属性。 4. 有临时数据的Task都应该重写该方法,行为树通常是需要反复执行的。

      覆盖:
      resetForRestart 在类中 Task<T>
    • beforeEnter

      protected void beforeEnter()
      模板类不重写enter方法,只有数据初始化逻辑
      覆盖:
      beforeEnter 在类中 Task<T>
    • exit

      protected void exit()
      从类复制的说明: Task
      该方法在Task进入完成状态时执行 1.该方法与Task.enter(int)对应,通常用于停止Task.enter(int)中启动的逻辑。 2.该方法也用于清理部分运行时产生的临时数据。 3.一定记得取消注册的各种监听器。
      覆盖:
      exit 在类中 Task<T>
    • getChildHelper

      public static <T> ParallelChildHelper<T> getChildHelper(Task<T> child)
      获取child的helper
    • initChildHelpers

      protected final void initChildHelpers()
      初始化child关联的helper 1.默认会设置为child的controlData,以避免反向查找开销。 2.建议在enter方法中调用。
    • resetHelpers

      protected final void resetHelpers()
    • onChildRunning

      protected void onChildRunning(Task<T> child, boolean starting)
      1.并发节点通常不需要在该事件中将自己更新为运行状态,而是应该在Task.execute()方法的末尾更新 2.实现类可以在该方法中内联子节点
      指定者:
      onChildRunning 在类中 Task<T>
      参数:
      starting - 是否是启动时调用,即首次调用