定时任务概述

简介: 定时任务指通过时间表达式调度执行的任务,适用于定时对账、超时取消等场景。实现方案包括单体架构的轮询休眠、Timer、ScheduledExecutorService、Quartz、SpringTask,以及分布式架构下的TBSchedule、Elastic-Job、XXL-JOB等,解决集群重复执行、动态调度、故障转移与监控问题。(238字)

什么是定时任务
通过时间表达式来进行调度和执行的一类任务被称为定时任务。一般能解决的业务场景:定时对账、服务到期的定时提醒、订单超时未支付的自动取消等。
有哪些定时任务实现方案
单体架构调度技术
轮询+线程休眠
while(true) + Thread.sleep
java.util.Timer + java.util.TimerTask
Timer是一个定时器工具,用来在一个后台线程计划执行指定任务,它可以计划执行一个任务或反复多次
TimerTask是一个抽象类,它的子类代表一个可以被Timer计划执行的任务
ScheduledExecutorService
JDK1.5之后作为并发工具被引入,默认只支持周期性的执行频率(如每秒/每分钟),要支持具体某一刻年月日时分秒的执行窗口需要自定义扩展,较麻烦
Quartz
开源任务调度框架,Java语言编写实现,支持Spring整合使用
SpringTask
spring框架提供的轻量级定时任务调用工具
SpringBoot框架下可使用注解:@EnableScheduling+@Scheduled,底层还是SpringTask
分布式架构调度技术
分布式场景可能遇到的问题
多台机器集群部署的定时任务如何保证不被重复执行
如果在不重启服务前提下,动态调整定时任务执行时间
部署定时任务的机器发生故障如何故障转移
如何对定时任务做任务监控
业界解决方案
淘宝:TBSchedule,现在是:ScheduleX
当当:Elastic-Job
唯品会:Saturn,基于当当的二次开发,新增一些特性
大众点评:XXL-JOB

相关文章
IntelliJ IDEA 如何实现代码展示自动换行
IntelliJ IDEA 如何实现代码展示自动换行
IntelliJ IDEA 如何实现代码展示自动换行
|
存储 Kubernetes 负载均衡
K8S原理和实践
K8S原理和实践
752 0
|
5月前
|
存储 SQL 人工智能
Windows Server 2025 中文版、英文版下载 (2025 年 12 月更新)
Windows Server 2025 LTSC x64 (updated Dec 2025)
1206 1
|
5月前
|
存储 算法 BI
xxljob本地运行
本文介绍XXL-JOB分布式任务调度的使用方法,包含源码获取、服务端部署(数据库导入、配置修改、启动访问)、客户端注册执行器、调度任务配置及测试执行。支持多种路由策略与分片广播,适用于分布式环境下的定时任务管理。
|
5月前
|
缓存
QLExpress使用及源码分析
基于QLExpress实现规则引擎,通过注解与YAML配置分离代码与逻辑。实体类用@QLAlias定义别名,接口方法标记@QLRule绑定规则脚本。YAML中编写可读性强的中文表达式,支持动态解析与缓存。运行时构建AST语法树,结合上下文执行,实现灵活、可扩展的规则计算与判断,适用于复杂业务场景的动态控制。
|
5月前
|
缓存 Java 数据库
Spring Boot中使用监听器
本文介绍了Web监听器的概念及在Spring Boot中的应用,涵盖监听ServletContext、HttpSession和ServletRequest的实战场景,实现数据缓存、在线人数统计与请求信息获取,并详解自定义事件与监听器的实现,适用于微服务间通信等业务需求,具有较强的实用价值。
|
消息中间件 Serverless 数据安全/隐私保护
开发者如何使用云消息队列 RabbitMQ 版
【10月更文挑战第13天】开发者如何使用云消息队列 RabbitMQ 版
685 103
|
存储 测试技术 虚拟化
|
存储 Kubernetes 安全
在K8S中,etcdctl如何使用?
在K8S中,etcdctl如何使用?
|
负载均衡 Java Spring
Spring Cloud实战小贴士:Ribbon的饥饿加载(eager-load)模式
Spring Cloud实战小贴士:Ribbon的饥饿加载(eager-load)模式
893 0

热门文章

最新文章