public class Scheduler extends Object implements Serializable
启动Timer =》 启动TaskLauncher =》 启动TaskExecutor调度器关闭流程:
关闭Timer =》 关闭所有运行中的TaskLauncher =》 关闭所有运行中的TaskExecutor其中:
TaskLauncher:定时器每分钟调用一次(如果isMatchSecond()为true每秒调用一次), 负责检查TaskTable是否有匹配到此时间运行的Task
TaskExecutor:TaskLauncher匹配成功后,触发TaskExecutor执行具体的作业,执行完毕销毁
| 限定符和类型 | 字段和说明 |
|---|---|
protected CronConfig |
config
定时任务配置
|
protected boolean |
daemon
是否为守护线程
|
protected TaskListenerManager |
listenerManager
监听管理器列表
|
protected TaskExecutorManager |
taskExecutorManager
执行器管理器
|
protected TaskLauncherManager |
taskLauncherManager
启动器管理器
|
protected TaskTable |
taskTable
定时任务表
|
protected ExecutorService |
threadExecutor
线程池,用于执行TaskLauncher和TaskExecutor
|
| 构造器和说明 |
|---|
Scheduler() |
| 限定符和类型 | 方法和说明 |
|---|---|
Scheduler |
addListener(TaskListener listener)
增加监听器
|
Scheduler |
clear()
清空任务表
|
Scheduler |
deschedule(String id)
移除Task
|
boolean |
descheduleWithStatus(String id)
移除Task,并返回是否移除成功
|
CronPattern |
getPattern(String id)
获得指定id的
CronPattern |
Task |
getTask(String id)
获得指定id的
Task |
TaskTable |
getTaskTable()
获取定时任务表,注意此方法返回非复制对象,对返回对象的修改将影响已有定时任务
|
TimeZone |
getTimeZone()
获得时区,默认为
TimeZone.getDefault() |
boolean |
isDaemon()
是否为守护线程
|
boolean |
isEmpty()
是否无任务
|
boolean |
isMatchSecond()
是否支持秒匹配
|
boolean |
isStarted() |
Scheduler |
removeListener(TaskListener listener)
移除监听器
|
Scheduler |
schedule(Setting cronSetting)
批量加入配置文件中的定时任务
配置文件格式为: xxx.xxx.xxx.Class.method = * * * * * |
Scheduler |
schedule(String id,
CronPattern pattern,
Task task)
新增Task,如果任务ID已经存在,抛出异常
|
String |
schedule(String pattern,
Runnable task)
新增Task,使用随机UUID
|
Scheduler |
schedule(String id,
String pattern,
Runnable task)
新增Task,如果任务ID已经存在,抛出异常
|
Scheduler |
schedule(String id,
String pattern,
Task task)
新增Task,如果任务ID已经存在,抛出异常
|
String |
schedule(String pattern,
Task task)
新增Task,使用随机UUID
|
Scheduler |
setDaemon(boolean on)
设置是否为守护线程
如果为true,则在调用 stop()方法后执行的定时任务立即结束,否则等待执行完毕才结束。 |
Scheduler |
setMatchSecond(boolean isMatchSecond)
设置是否支持秒匹配,默认不使用
|
Scheduler |
setThreadExecutor(ExecutorService threadExecutor)
设置自定义线程池
自定义线程池时须考虑方法执行的线程是否为守护线程 |
Scheduler |
setTimeZone(TimeZone timeZone)
设置时区
|
int |
size()
当前任务数
|
Scheduler |
start()
启动
|
Scheduler |
start(boolean isDaemon)
启动
|
Scheduler |
stop()
停止定时任务
此方法调用后会将定时器进程立即结束,如果为守护线程模式,则正在执行的作业也会自动结束,否则作业线程将在执行完成后结束。 |
Scheduler |
stop(boolean clearTasks)
停止定时任务
此方法调用后会将定时器进程立即结束,如果为守护线程模式,则正在执行的作业也会自动结束,否则作业线程将在执行完成后结束。 |
Scheduler |
updatePattern(String id,
CronPattern pattern)
更新Task执行的时间规则
|
protected CronConfig config
protected boolean daemon
protected TaskTable taskTable
protected TaskLauncherManager taskLauncherManager
protected TaskExecutorManager taskExecutorManager
protected TaskListenerManager listenerManager
protected ExecutorService threadExecutor
public TimeZone getTimeZone()
TimeZone.getDefault()public Scheduler setDaemon(boolean on) throws CronException
stop()方法后执行的定时任务立即结束,否则等待执行完毕才结束。默认非守护线程setThreadExecutor(ExecutorService)自定义线程池则此参数无效on - true为守护线程,否则非守护线程CronException - 定时任务已经启动抛出此异常public Scheduler setThreadExecutor(ExecutorService threadExecutor) throws CronException
threadExecutor - 自定义线程池CronException - 定时任务已经启动抛出此异常public boolean isDaemon()
public boolean isMatchSecond()
true使用,false不使用public Scheduler setMatchSecond(boolean isMatchSecond)
isMatchSecond - true支持,false不支持public Scheduler addListener(TaskListener listener)
listener - TaskListenerpublic Scheduler removeListener(TaskListener listener)
listener - TaskListenerpublic Scheduler schedule(Setting cronSetting)
cronSetting - 定时任务设置文件public String schedule(String pattern, Runnable task)
pattern - CronPattern对应的String表达式task - Runnablepublic String schedule(String pattern, Task task)
pattern - CronPattern对应的String表达式task - Taskpublic Scheduler schedule(String id, String pattern, Runnable task)
id - ID,为每一个Task定义一个IDpattern - CronPattern对应的String表达式task - Runnablepublic Scheduler schedule(String id, String pattern, Task task)
id - ID,为每一个Task定义一个IDpattern - CronPattern对应的String表达式task - Taskpublic Scheduler schedule(String id, CronPattern pattern, Task task)
id - ID,为每一个Task定义一个IDpattern - CronPatterntask - Taskpublic boolean descheduleWithStatus(String id)
id - Task的IDfalse表示未找到对应ID的任务public Scheduler updatePattern(String id, CronPattern pattern)
id - Task的IDpattern - CronPatternpublic TaskTable getTaskTable()
TaskTablepublic CronPattern getPattern(String id)
CronPatternid - IDCronPatternpublic boolean isEmpty()
public int size()
public Scheduler clear()
public boolean isStarted()
public Scheduler start(boolean isDaemon)
isDaemon - 是否以守护线程方式启动,如果为true,则在调用stop()方法后执行的定时任务立即结束,否则等待执行完毕才结束。public Scheduler start()
public Scheduler stop()
clear() 方法清空任务或者使用stop(boolean)方法可选是否清空public Scheduler stop(boolean clearTasks)
clearTasks - 是否清除所有任务Copyright © 2024. All rights reserved.