尉氏网站建设,南通优化网站公司哪家好,地区网站建设服务周到,企业邮箱Author#xff1a;赵志乾
Date#xff1a;2024-06-11
Declaration#xff1a;All Right Reserved#xff01;#xff01;#xff01;
问题#xff1a;建模过程中经常遇到需要临时规划特定逻辑执行时机的场景#xff1b;
解决方案#xff1a;在Event的User Control模…Author赵志乾
Date2024-06-11
DeclarationAll Right Reserved
问题建模过程中经常遇到需要临时规划特定逻辑执行时机的场景
解决方案在Event的User Control模式下通过api方式对事件对象进行操控事件对象的常用api见下表
函数功能boolean isActive()判定事件对象是否存在尚未调度的执行规划void reset()取消事件对象上尚未调度的执行规划void restart(double timeout, TimeUnits units)重新为事件对象设置执行规划double getRest(TimeUnits units)获取当前时刻至Event逻辑触发时的时间间隔当Event不存在尚未执行的规划时该函数将返回infinity。 代码模板以及额外事项说明
// 前提条件: 容器智能体内已有事件event定义并且设置模式为user control;
if(condition){// step1: 基于当前时刻重新规划执行时机--10分钟后执行事件event.restart(10,MINUTE);
}额外说明:
1. reset函数内部会自动将超时时间设置为Double.POSITIVE_INFINITY;此时再调用isActive函数将返回false;
2. restart函数内部会自动调用reset函数用户无需再额外处理;
3. User Control模式下,事件一旦被触发将自动进入失活状态,即调用isActive函数将返回false;
4. restart函数将超时时间设为Double.POSITIVE_INFINITY时,事件对象将自动进入失活状态;
5. 基于以上描述,一个Event对象只能串行调度事件且在特定时刻只能规划未来一个执行时刻当在前一次规划时刻前重新规划时原有规划内容将被覆盖原因: restart自动调用reset取消尚未执行的规划;