public class Scheduler extends Object implements Serializable
启动Timer =》 启动TaskLauncher =》 启动TaskExecutor调度器关闭流程:
关闭Timer =》 关闭所有运行中的TaskLauncher =》 关闭所有运行中的TaskExecutor其中:
TaskLauncher:定时器每分钟调用一次(如果isMatchSecond()
为true
每秒调用一次), 负责检查TaskTable是否有匹配到此时间运行的Task
TaskExecutor:TaskLauncher匹配成功后,触发TaskExecutor执行具体的作业,执行完毕销毁
Modifier and Type | Field and Description |
---|---|
protected CronConfig |
config
定时任务配置
|
protected boolean |
daemon
是否为守护线程
|
protected TaskListenerManager |
listenerManager
监听管理器列表
|
protected TaskExecutorManager |
taskExecutorManager
执行器管理器
|
protected TaskLauncherManager |
taskLauncherManager
启动器管理器
|
protected TaskTable |
taskTable
定时任务表
|
protected ExecutorService |
threadExecutor
线程池,用于执行TaskLauncher和TaskExecutor
|
Constructor and Description |
---|
Scheduler() |
Modifier and Type | Method and Description |
---|---|
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 Scheduler setTimeZone(TimeZone timeZone)
timeZone
- 时区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
- TaskListener
public Scheduler removeListener(TaskListener listener)
listener
- TaskListener
public Scheduler schedule(Setting cronSetting)
cronSetting
- 定时任务设置文件public String schedule(String pattern, Runnable task)
pattern
- CronPattern
对应的String表达式task
- Runnable
public String schedule(String pattern, Task task)
pattern
- CronPattern
对应的String表达式task
- Task
public Scheduler schedule(String id, String pattern, Runnable task)
id
- ID,为每一个Task定义一个IDpattern
- CronPattern
对应的String表达式task
- Runnable
public Scheduler schedule(String id, String pattern, Task task)
id
- ID,为每一个Task定义一个IDpattern
- CronPattern
对应的String表达式task
- Task
public Scheduler schedule(String id, CronPattern pattern, Task task)
id
- ID,为每一个Task定义一个IDpattern
- CronPattern
task
- Task
public boolean descheduleWithStatus(String id)
id
- Task的IDfalse
表示未找到对应ID的任务public Scheduler updatePattern(String id, CronPattern pattern)
id
- Task的IDpattern
- CronPattern
public TaskTable getTaskTable()
TaskTable
public CronPattern getPattern(String id)
CronPattern
id
- IDCronPattern
public 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.