类 Context<T>

java.lang.Object
cn.wjybxx.concurrent.Context<T>
所有已实现的接口:
IContext

public class Context<T> extends Object implements IContext
默认上下文实现

黑板类型

默认实现假设了父上下文和当前上下文的黑板类型一致,这个假设并不总是成立,但一般情况下是如此; 如果该实现不满足需求,用户可实现自己的上下文类型。
作者:
wjybxx date - 2023/11/18
  • 构造器详细资料

    • Context

      public Context(T blackboard)
    • Context

      public Context(T blackboard, Object sharedProps)
    • Context

      public Context(Context<T> parent, Object state, ICancelToken cancelToken, T blackboard, Object sharedProps)
      一般不建议直接调用该方法,而是通过withBlackboard(Object)等创建子上下文,否则无法处理上下文继承问题。
      参数:
      parent - 父节点
      state - 任务绑定的状态
      cancelToken - 取消令牌
      blackboard - 黑板
      sharedProps - 共享属性
  • 方法详细资料

    • root

      public Context<T> root()
      根上下文 1.根上下文中可能保存着一些有用的行为。 2.记录更上下文可以避免深度的递归查找。 3.没有父节点的Context的根为自己。

      默认的实现不缓存(root)上下文,如果用户需要频繁访问root上下文,可实现自己的上下文类型, 将root缓存在每一级的context上,以减少查找开销。

    • parent

      public Context<T> parent()
      父上下文 由于我们没有提供默认的黑板实现,因此需要支持用户迭代上下文。
    • state

      public Object state()
      从接口复制的说明: IContext
      任务绑定的状态 1.任务之间通常不共享 -- 私有属性。 2.运行时可能为null。
      指定者:
      state 在接口中 IContext
    • cancelToken

      @Nonnull public ICancelToken cancelToken()
      从接口复制的说明: IContext
      任务绑定的取消令牌(取消上下文) 1.每个任务可有独立的取消信号 -- 私有属性。 2.运行时不为null - 可返回ICancelToken.NONE
      指定者:
      cancelToken 在接口中 IContext
    • blackboard

      public T blackboard()
      从接口复制的说明: IContext
      任务运行时依赖的黑板(主要上下文) 1.每个任务可有独立的黑板(数据); 2.一般而言,黑板需要实现递归向上查找。

      这里未直接实现为类似Map的读写接口,是故意的。 因为提供类似Map的读写接口,会导致创建Context的开销变大,而在许多情况下是不必要的。 将黑板设定为Object类型,既可以增加灵活性,也可以减少一般情况下的开销。

      指定者:
      blackboard 在接口中 IContext
    • sharedProps

      public Object sharedProps()
      从接口复制的说明: IContext
      共享属性(配置上下文) 1.用于支持【数据和行为分离】的Task体系。 2.共享属性应该是只读的、可共享的,因为它是配置。

      数据和行为分离是指:Task仅包含行为,其属性是外部传入的;属性可能是单个任务的,也可能是多个任务共享的。

      指定者:
      sharedProps 在接口中 IContext
    • ofBlackboard

      public static <U> Context<U> ofBlackboard(U blackboard)
    • ofBlackboard

      public static <U> Context<U> ofBlackboard(U blackboard, Object sharedProps)
    • ofState

      public static <U> Context<U> ofState(Object state)
    • ofState

      public static <U> Context<U> ofState(Object state, ICancelToken cancelToken)
    • ofState

      public static <U> Context<U> ofState(Object state, ICancelToken cancelToken, U blackboard, Object sharedProps)
    • ofCancelToken

      public static <U> Context<U> ofCancelToken(ICancelToken cancelToken)
    • newContext

      protected Context<T> newContext(Context<T> parent, Object state, ICancelToken cancelToken, T blackboard, Object sharedProps)
      用于子类重写
      参数:
      parent - 父节点
      state - 任务绑定的状态
      cancelToken - 取消令牌
      blackboard - 黑板
      sharedProps - 共享属性
    • childWithState

      public Context<T> childWithState(Object state)
    • childWithState

      public Context<T> childWithState(Object state, ICancelToken cancelToken)
    • childWithBlackboard

      public Context<T> childWithBlackboard(T blackboard)
    • childWithBlackboard

      public Context<T> childWithBlackboard(T blackboard, Object sharedProps)
    • childWith

      public Context<T> childWith(Object state, ICancelToken cancelToken, T blackboard, Object sharedProps)
    • withState

      public Context<T> withState(Object state)
    • withState

      public Context<T> withState(Object state, ICancelToken cancelToken)
    • withBlackboard

      public Context<T> withBlackboard(T blackboard)
    • withBlackboard

      public Context<T> withBlackboard(T blackboard, Object sharedProps)
    • with

      public Context<T> with(Object state, ICancelToken cancelToken, T blackboard, Object sharedProps)