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