java任务调度

Quartz大致是怎样的?[面试5.0]

JobDetail和Trigger绑定,一个JobDetail可以绑定多个Trigger
一个任务调度类实现Job接口,并实现excute方法,并通过Scheduler将JobDetail和Trigger绑定
上下文:JobExecutionContext
参数传递:JobStore将参数值存入内存或数据库,并通过上下文对象可以拿到

怎样设计分布式任务调度?[面试7.0]

将任务存放到数据库(任务配置表)
任务管理动态管理配置(利用Scheduler的API做)
集群化,集群化会出现的问题:
重复跑: 多个节点同一时刻可能同时执行一个任务的调度,同时操作数据库,会有并发问题
漏跑(missfire): Scheduler资源不足,到了该触发执行时上一个执行还未完成,一个节点挂掉了会导致有些Trigger在指定时间该执行的任务没有被执行的情况
Quartz底层是利用数据的行级悲观锁(for update)来解决重复跑和漏跑问题的,对于漏跑时Quartz集群一个节点会接管挂掉节点的任务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2023年Java面试宝典

您的鼓励是对我的肯定,共建希望

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值