- 所有超级接口:
ICancelTokenListener
- 所有已知实现类:
CancelToken
行为树模块使用的取消令牌
1.行为树模块需要的功能不多,且需要进行一些特殊的优化,因此去除对Concurrent模块的依赖。
2.关于取消码的设计,可查看 类。
3.继承 是为了方便通知子Token。
4.在行为树模块,Task在运行期间最多只应该添加一次监听。
5.Task在处理取消信号时不需要调用该方法来删除自己,令牌会先删除Listener再通知。
- 作者:
- wjybxx date - 2024/7/14
-
方法概要
修饰符和类型方法说明voidaddListener(ICancelTokenListener listener) 添加监听器intcancel()使用默认取消码CancelCodes.REASON_DEFAULTintcancel(int cancelCode) 发送取消信号int取消码 1.按bit位存储信息,包括是否请求中断,是否超时,紧急程度等 2.低20位为取消原因;高12位为特殊信息CancelCodes.MASK_REASON3.不为0表示已发起取消请求 4.取消时至少赋值一个信息,reason通常应该赋值default intdegree()取消的紧急程度booleanhasListener(ICancelTokenListener listener) 查询是否存在给定的监听器default boolean是否已收到取消信号 任务的执行者将持有该令牌,在调度任务前会检测取消信号;如果任务已经开始,则由用户的任务自身检测取消和中断信号。default ICancelToken创建一个同类型实例(默认只拷贝环境数据)newInstance(boolean copyCode) 创建一个同类型实例(默认只拷贝环境数据)default intreason()取消的原因 (1~10为底层使用,10以上为用户自定义)TbooleanremListener(ICancelTokenListener listener) 删除指定监听器booleanremListener(ICancelTokenListener listener, boolean firstOccurrence) 删除监听器 注意:Task在处理取消信号时不需要调用该方法来删除自己,令牌会先删除Listener再通知。voidreset()重置状态(行为树模块取消令牌需要复用)从接口继承的方法 cn.wjybxx.btree.ICancelTokenListener
onCancelRequested
-
方法详细资料
-
reset
void reset()重置状态(行为树模块取消令牌需要复用) -
cancelCode
int cancelCode()取消码 1.按bit位存储信息,包括是否请求中断,是否超时,紧急程度等 2.低20位为取消原因;高12位为特殊信息CancelCodes.MASK_REASON3.不为0表示已发起取消请求 4.取消时至少赋值一个信息,reason通常应该赋值 -
isCancelling
default boolean isCancelling()是否已收到取消信号 任务的执行者将持有该令牌,在调度任务前会检测取消信号;如果任务已经开始,则由用户的任务自身检测取消和中断信号。 -
reason
default int reason()取消的原因 (1~10为底层使用,10以上为用户自定义)T -
degree
default int degree()取消的紧急程度 -
cancel
int cancel()使用默认取消码CancelCodes.REASON_DEFAULT -
cancel
int cancel(int cancelCode) 发送取消信号- 参数:
cancelCode- 取消码;reason部分需大于0- 返回:
- Token的当前值;如果Token已被取消,则非0;如果Token尚未被取消,则返回0。
- 抛出:
IllegalArgumentException- 如果code小于等于0;或reason部分为0
-
addListener
添加监听器 -
remListener
删除指定监听器 -
remListener
删除监听器 注意:Task在处理取消信号时不需要调用该方法来删除自己,令牌会先删除Listener再通知。- 参数:
listener- 要删除的监听器firstOccurrence- 是否强制正向查找删除- 返回:
- 存在匹配的监听器则返回true
-
hasListener
查询是否存在给定的监听器 -
newInstance
创建一个同类型实例(默认只拷贝环境数据) -
newInstance
创建一个同类型实例(默认只拷贝环境数据)- 参数:
copyCode- 是否拷贝当前取消码- 返回:
- 新实例
-