类 OnlyOnce<T>

java.lang.Object
cn.wjybxx.btree.Task<T>
cn.wjybxx.btree.Decorator<T>
cn.wjybxx.btree.decorator.OnlyOnce<T>
所有已实现的接口:
ICancelTokenListener

public class OnlyOnce<T> extends Decorator<T>
只执行一次。 1.适用那些不论成功与否只执行一次的行为。 2.在调用Decorator.resetForRestart()后可再次运行。
作者:
wjybxx date - 2023/11/26
  • 构造器详细资料

    • OnlyOnce

      public OnlyOnce()
    • OnlyOnce

      public OnlyOnce(Task<T> child)
  • 方法详细资料

    • execute

      protected void execute()
      从类复制的说明: Task
      Task的心跳方法,在Task进入完成状态之前会反复执行。 1.运行中可通过Task.setSuccess()Task.setFailed(int)Task.setCancelled()将自己更新为完成状态。 2.如果不想和Task.enter(int)同步执行,可通过Task.setSlowStart(boolean)实现。 3.不建议直接调用该方法,而是通过模板方法Task.template_execute(boolean)运行。
      指定者:
      execute 在类中 Task<T>
    • onChildRunning

      protected void onChildRunning(Task<T> child, boolean starting)
      从类复制的说明: Decorator
      子类如果支持内联,则重写该方法(超类不能安全内联)
      覆盖:
      onChildRunning 在类中 Decorator<T>
      参数:
      starting - 是否是启动时调用,即首次调用
    • onChildCompleted

      protected void onChildCompleted(Task<T> child)
      从类复制的说明: Task
      子节点进入完成状态 1.避免方法数太多,实现类测试task的status即可 2.Task.getNormalizedStatus()有助于switch测试 3.task可能是取消状态,甚至可能没运行过直接失败(前置条件失败) 4.钩子任务和guard不会调用该方法 5.同一子节点连续通知的情况下,completed的逻辑应当覆盖Task.onChildRunning(Task, boolean)的影响。 6.任何的回调和事件方法中都由用户自身检测取消信号
      指定者:
      onChildCompleted 在类中 Task<T>