java.lang.Object
cn.wjybxx.concurrent.TaskOption
任务调度选项
- 作者:
- wjybxx date 2023/4/14
-
字段概要
字段修饰符和类型字段说明static final int延时任务:在出现异常后继续执行。static final int延时任务:忽略来自future的取消 1.static final int本地序(可以与其它线程无序) 对于EventLoop内部的任务,启用该特征值可跳过全局队列,这在EventLoop是有界的情况下可以避免死锁或阻塞。static final int延时任务的优先级,取值[0, 15] 1.static final int低位用于存储任务的调度阶段,取值[0, 63],使用低位可以避免位移。static final int优先级的最大值static final int调度阶段的最大值static final int优先级的存储偏移量static final int事件循环在执行该任务前必须先处理一次定时任务队列。static final intstatic final int该选项表示异步任务需要继承上游任务的取消令牌。static final int默认情况下,如果一个异步任务的Executor是IExecutor类型,options将传递给Executor。static final int如果一个异步任务当前已在目标SingleThreadExecutor线程,则立即执行,而不提交任务。static final int延时任务:在执行任务前检测超时 1.static final int唤醒事件循环线程 事件循环线程可能阻塞某些操作上,如果一个任务需要EventLoop及时处理,则可以启用该选项唤醒线程。 -
构造器概要
构造器 -
方法概要
修饰符和类型方法说明static intdisable(int flags, int option) 禁用特定调度选项static intenable(int flags, int option) 启用特定调度选项static intgetPriority(int options) 获取任务的优先级static intgetSchedulePhase(int options) 获取任务的调度阶段static booleanisDisabled(int flags, int option) 是否未启用选项。static booleanisEnabled(int flags, int option) 是否启用了所有选项static intsetEnable(int flags, int option, boolean enable) 启用或关闭特定选项static intsetPriority(int options, int priority) 设置优先级static intsetSchedulePhase(int options, int phase) 设置任务的调度阶段
-
字段详细资料
-
MASK_SCHEDULE_PHASE
public static final int MASK_SCHEDULE_PHASE低位用于存储任务的调度阶段,取值[0, 63],使用低位可以避免位移。 1. 用于指定异步任务的调度时机。 2. 主要用于EventLoop这类单线程的Executor -- 尤其是游戏这类分阶段的事件循环。- 另请参阅:
-
MASK_PRIORITY
public static final int MASK_PRIORITY延时任务的优先级,取值[0, 15] 1. 当任务的触发时间相同时,按照优先级排序,值越低优先级越高。 2. 由于0需要表示未设置优先级,因此Executor会对值进行偏移,通常而言是减1。 3. 优先级值的约定取决于各自的实现。- 另请参阅:
-
SCHEDULE_BARRIER
public static final int SCHEDULE_BARRIER事件循环在执行该任务前必须先处理一次定时任务队列。 1. EventLoop收到具有该特征的任务时,需要更新时间戳,尝试执行该任务之前的所有定时任务。 2. 该选项不一定能保证时序,因为存在时序依赖的任务可能同时提交成功。- 另请参阅:
-
LOCAL_ORDER
public static final int LOCAL_ORDER本地序(可以与其它线程无序) 对于EventLoop内部的任务,启用该特征值可跳过全局队列,这在EventLoop是有界的情况下可以避免死锁或阻塞。- 另请参阅:
-
WAKEUP_THREAD
public static final int WAKEUP_THREAD唤醒事件循环线程 事件循环线程可能阻塞某些操作上,如果一个任务需要EventLoop及时处理,则可以启用该选项唤醒线程。- 另请参阅:
-
CAUGHT_EXCEPTION
public static final int CAUGHT_EXCEPTION延时任务:在出现异常后继续执行。 注意:只适用无需结果的周期性任务 -- 分时任务会失败。- 另请参阅:
-
TIMEOUT_BEFORE_RUN
public static final int TIMEOUT_BEFORE_RUN延时任务:在执行任务前检测超时 1. 也就是说在已经超时的情况下不执行任务。 2. 在执行后一定会检测一次超时。- 另请参阅:
-
IGNORE_FUTURE_CANCEL
public static final int IGNORE_FUTURE_CANCEL延时任务:忽略来自future的取消 1. 由于要和jdk保持兼容,默认是需要监听来自Future的取消信号的。 2. 同时我们需要监听来自ICancelToken的取消,两端都监听有冗余开销。 3. 用户可以启用该选项以避免监听来自Future的取消。ps:监听取消信号的目的在于及时从队列中删除任务。
- 另请参阅:
-
STAGE_INHERIT_TOKEN
public static final int STAGE_INHERIT_TOKEN该选项表示异步任务需要继承上游任务的取消令牌。 注意: 在显式指定了上下文的情况下无效。- 另请参阅:
-
STAGE_TRY_INLINE
public static final int STAGE_TRY_INLINE如果一个异步任务当前已在目标SingleThreadExecutor线程,则立即执行,而不提交任务。 仅用于ICompletionStage- 另请参阅:
-
STAGE_NON_TRANSITIVE
public static final int STAGE_NON_TRANSITIVE默认情况下,如果一个异步任务的Executor是IExecutor类型,options将传递给Executor。 如果期望禁用传递,可设置改选项。 仅用于ICompletionStage- 另请参阅:
-
STAGE_CHECK_OBJECT_CTX
public static final int STAGE_CHECK_OBJECT_CTX- 另请参阅:
-
OFFSET_PRIORITY
public static final int OFFSET_PRIORITY优先级的存储偏移量- 另请参阅:
-
MAX_SCHEDULE_PHASE
public static final int MAX_SCHEDULE_PHASE调度阶段的最大值- 另请参阅:
-
MAX_PRIORITY
public static final int MAX_PRIORITY优先级的最大值- 另请参阅:
-
-
构造器详细资料
-
TaskOption
public TaskOption()
-
-
方法详细资料
-
isEnabled
public static boolean isEnabled(int flags, int option) 是否启用了所有选项 -
isDisabled
public static boolean isDisabled(int flags, int option) 是否未启用选项。 1.禁用任意bit即为未启用; 2.和isEnabled(int, int)相反关系 -
enable
public static int enable(int flags, int option) 启用特定调度选项 -
disable
public static int disable(int flags, int option) 禁用特定调度选项 -
setEnable
public static int setEnable(int flags, int option, boolean enable) 启用或关闭特定选项 -
getSchedulePhase
public static int getSchedulePhase(int options) 获取任务的调度阶段 -
setSchedulePhase
public static int setSchedulePhase(int options, int phase) 设置任务的调度阶段 -
getPriority
public static int getPriority(int options) 获取任务的优先级 -
setPriority
public static int setPriority(int options, int priority) 设置优先级
-