Task
TaskConfig
task_config
的属性如下
- 任务id
- 任务名称
- 任务描述
- 任务超时
- 任务分组
- 任务优先级
TaskRecord
task_record
的属性如下
- 记录id
- 任务id
- 任务参数
- 任务结果
- 任务状态
- 任务创建时间
- 任务开始时间
- 任务结束时间
- 任务耗时
TaskState
task_state
的属性如下
- 已创建 10
- 运行中 20
- 已取消 30
- 已中断 40
- 已成功 50
- 已失败 60
- 已超时 70
ps:任务在
运行前
可以被取消
,在运行时
只能被中断
JavaTask
参考java并发篇
NormalTask
SyncTask
AsyncTask
ScheduledTask
DelayedTask
TimedTask
SpringTask
NormalTask
SyncTask
AsyncTask
Invalid
ps:@Async是通过AOP实现的,所以失效的场景包含AOP失效的场景
ScheduledTask
DelayedTask
延时任务的实现方案
- 线程方案
Thread.sleep
:会导致线程暂停,效率低,不推荐
- 线程池方案
ScheduledExecutorService.schedule(Runnable command, long delay, TimeUnit unit)
TaskScheduler.schedule(Runnable task, Instant startTime)
- 队列方案
PriorityBlockingQueue
+ 轮询:效率低,不推荐DelayQueue
MQ延时消息
ps:推荐使用MQ延时消息,因为MQ延时消息支持任务持久化,其他方案不支持
TODO:需要确认@Scheduled
只配置initialDelay
参数是否也能实现延时任务???
TODO:@Scheduled支不支持延时任务