接口 TimeSharingTask<V>

函数接口:
这是一个函数接口, 因此可用作 lambda 表达式或方法引用的赋值目标。

@FunctionalInterface public interface TimeSharingTask<V>
可分时运行的任务 - 需要长时间运行才能得出结果的任务。 1. 分时任务代表着所有需要自定义管理状态的任务。 2. 除了设置Promise的结果外,Task还可以约定特殊的Promise以向外部传递其它信息,比如:任务的进度。 3. 该接口尚不稳定,避免用于非EventLoop架构。
作者:
wjybxx date 2023/4/3
  • 方法概要

    修饰符和类型
    方法
    说明
    default void
    inject(IContext ctx, IPromise<? super V> promise)
    任务在添加到Executor之前进行绑定
    default void
    start(IContext ctx, IPromise<? super V> promise)
    任务开始前调用 1. start和update是连续执行的。
    default void
    stop(IContext ctx, IPromise<? super V> promise)
    任务结束时调用 1.只有在成功执行start(IContext, IPromise)的情况下才会调用 2.会在start所在的executor调用 -- 如果目标executor已关闭则不会执行。
    void
    update(IContext ctx, IPromise<? super V> promise)
    单步执行一次。
  • 方法详细资料

    • inject

      default void inject(IContext ctx, IPromise<? super V> promise)
      任务在添加到Executor之前进行绑定
    • start

      default void start(IContext ctx, IPromise<? super V> promise)
      任务开始前调用 1. start和update是连续执行的。 2. start抛出异常会导致任务直接结束。
      参数:
      ctx - 任务的上下文
      promise - 关联的promise
    • update

      void update(IContext ctx, IPromise<? super V> promise) throws Exception
      单步执行一次。 1.Executor在执行该方法之前会调用IPromise.trySetComputing(),因此任务内部无需再次调用。 2.任务在完成时需要将Promise置为完成状态!
      参数:
      ctx - 任务的上下文
      promise - 关联的promise
      抛出:
      Exception
    • stop

      default void stop(IContext ctx, IPromise<? super V> promise)
      任务结束时调用 1.只有在成功执行start(IContext, IPromise)的情况下才会调用 2.会在start所在的executor调用 -- 如果目标executor已关闭则不会执行。
      参数:
      ctx - 任务的上下文
      promise - 关联的promise