Package org.aoju.bus.cron
Class Scheduler
java.lang.Object
org.aoju.bus.cron.Scheduler
任务调度器
调度器启动流程:
启动Timer - 启动Launcher - 启动Executor
调度器关闭流程:
关闭Timer - 关闭所有运行中的Launcher - 关闭所有运行中的Executor
其中:
Launcher:定时器每分钟调用一次(如果isMatchSecond()为true每秒调用一次), 负责检查Repertoire是否有匹配到此时间运行的Task
Executor:Launcher匹配成功后,触发Executor执行具体的作业,执行完毕销毁
- Since:
- Java 17+
- Version:
- 6.5.0
- Author:
- Kimi Liu
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected Configure定时任务配置protected boolean是否为守护线程protected TaskListenerManager监听管理器列表protected Manager执行管理器protected Repertoire定时任务表protected Supervisor启动管理器protected ExecutorService线程池 -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionaddListener(TaskListener listener) 增加监听器clear()清空任务表deschedule(String id) 移除Taskboolean移除Task,并返回是否移除成功getPattern(String id) 获得指定id的CronPattern获得指定id的Task获取定时任务表,注意此方法返回非复制对象,对返回对象的修改将影响已有定时任务booleanisDaemon()是否为守护线程booleanisEmpty()是否无任务boolean是否支持秒匹配booleanremoveListener(TaskListener listener) 移除监听器新增Task,使用随机UUID新增Task新增Task新增Task,使用随机UUIDschedule(String id, CronPattern pattern, Task task) 新增Taskschedule(org.aoju.bus.setting.magic.PopSetting cronSetting) 批量加入配置文件中的定时任务 配置文件格式为: xxx.xxx.xxx.Class.method = * * * * *setDaemon(boolean on) 设置是否为守护线程 如果为true,则在调用stop()方法后执行的定时任务立即结束,否则等待执行完毕才结束 默认非守护线程setMatchSecond(boolean isMatchSecond) 设置是否支持秒匹配,默认不使用setTimeZone(TimeZone timeZone) 设置时区intsize()当前任务数start()启动start(boolean isDeamon) 启动stop()停止定时任务 此方法调用后会将定时器进程立即结束,如果为守护线程模式,则正在执行的作业也会自动结束,否则作业线程将在执行完成后结束 此方法并不会清除任务表中的任务,请调用clear()方法清空任务或者使用stop(boolean)方法可选是否清空stop(boolean clearTasks) 停止定时任务 此方法调用后会将定时器进程立即结束,如果为守护线程模式,则正在执行的作业也会自动结束,否则作业线程将在执行完成后结束updatePattern(String id, CronPattern pattern) 更新Task执行的时间规则
-
Field Details
-
daemon
protected boolean daemon是否为守护线程 -
supervisor
启动管理器 -
manager
执行管理器 -
threadExecutor
线程池 -
config
定时任务配置 -
repertoire
定时任务表 -
listenerManager
监听管理器列表
-
-
Constructor Details
-
Scheduler
public Scheduler()
-
-
Method Details
-
setTimeZone
设置时区- Parameters:
timeZone- 时区- Returns:
- this
-
isDaemon
public boolean isDaemon()是否为守护线程- Returns:
- 是否为守护线程
-
setDaemon
设置是否为守护线程 如果为true,则在调用stop()方法后执行的定时任务立即结束,否则等待执行完毕才结束 默认非守护线程- Parameters:
on-true为守护线程,否则非守护线程- Returns:
- this
- Throws:
org.aoju.bus.core.lang.exception.InstrumentException- 定时任务已经启动抛出此异常
-
isMatchSecond
public boolean isMatchSecond()是否支持秒匹配- Returns:
true使用,false不使用
-
setMatchSecond
设置是否支持秒匹配,默认不使用- Parameters:
isMatchSecond-true支持,false不支持- Returns:
- this
-
addListener
增加监听器- Parameters:
listener-TaskListener- Returns:
- this
-
removeListener
移除监听器- Parameters:
listener-TaskListener- Returns:
- this
-
schedule
批量加入配置文件中的定时任务 配置文件格式为: xxx.xxx.xxx.Class.method = * * * * *- Parameters:
cronSetting- 定时任务设置文件- Returns:
- this
-
schedule
新增Task,使用随机UUID- Parameters:
pattern-CronPattern对应的String表达式task-Runnable- Returns:
- ID
-
schedule
新增Task,使用随机UUID- Parameters:
pattern-CronPattern对应的String表达式task-Task- Returns:
- ID
-
schedule
新增Task- Parameters:
id- ID,为每一个Task定义一个IDpattern-CronPattern对应的String表达式task-Runnable- Returns:
- this
-
schedule
新增Task- Parameters:
id- ID,为每一个Task定义一个IDpattern-CronPattern对应的String表达式task-Task- Returns:
- this
-
schedule
新增Task- Parameters:
id- ID,为每一个Task定义一个IDpattern-CronPatterntask-Task- Returns:
- this
-
deschedule
移除Task- Parameters:
id- Task的ID- Returns:
- this
-
descheduleWithStatus
移除Task,并返回是否移除成功- Parameters:
id- Task的ID- Returns:
- 是否移除成功,
false表示未找到对应ID的任务
-
updatePattern
更新Task执行的时间规则- Parameters:
id- Task的IDpattern-CronPattern- Returns:
- this
-
getTaskTable
获取定时任务表,注意此方法返回非复制对象,对返回对象的修改将影响已有定时任务- Returns:
- 定时任务表
Repertoire
-
getPattern
获得指定id的CronPattern- Parameters:
id- ID- Returns:
CronPattern
-
getTask
获得指定id的Task- Parameters:
id- ID- Returns:
Task
-
isEmpty
public boolean isEmpty()是否无任务- Returns:
- true表示无任务
-
size
public int size()当前任务数- Returns:
- 当前任务数
-
clear
清空任务表- Returns:
- this
-
isStarted
public boolean isStarted()- Returns:
- 是否已经启动
-
start
启动- Parameters:
isDeamon- 是否以守护线程方式启动,如果为true,则在调用stop()方法后执行的定时任务立即结束,否则等待执行完毕才结束- Returns:
- this
-
start
启动- Returns:
- this
-
stop
停止定时任务 此方法调用后会将定时器进程立即结束,如果为守护线程模式,则正在执行的作业也会自动结束,否则作业线程将在执行完成后结束 此方法并不会清除任务表中的任务,请调用clear()方法清空任务或者使用stop(boolean)方法可选是否清空- Returns:
- this
-
stop
停止定时任务 此方法调用后会将定时器进程立即结束,如果为守护线程模式,则正在执行的作业也会自动结束,否则作业线程将在执行完成后结束- Parameters:
clearTasks- 标记- Returns:
- this
-