定时任务概述

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

什么是定时任务
通过时间表达式来进行调度和执行的一类任务被称为定时任务。一般能解决的业务场景:定时对账、服务到期的定时提醒、订单超时未支付的自动取消等。
有哪些定时任务实现方案
单体架构调度技术
● 轮询+线程休眠
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

相关文章
|
8月前
|
弹性计算 运维 监控
【运维排查】服务器CPU飙升100%?别慌,教你3步精准定位“罪魁祸首”
当服务器CPU飙高时,别急着重启!本文教你四步精准排查:用`top`定位高占用进程,`top -Hp`找出耗CPU线程,`printf`转十六进制,再通过`jstack`结合线程ID定位到具体代码行。快速锁定死循环、频繁GC或复杂计算等问题根源,成为团队中的故障排查高手。
|
8月前
|
Java Linux Docker
Docker
本文介绍Docker基础操作,涵盖镜像打包、容器运行及Dockerfile编写。通过实例演示如何构建Java项目镜像、启动容器并验证服务,适合初学者快速掌握Docker核心技能。
|
8月前
|
Java Linux 开发工具
Linux
本文介绍如何将一个简单的SpringBoot应用打包并部署到Linux服务器。包括项目搭建、JAR包打包、JDK安装配置、应用上传与启动,以及通过心跳接口验证服务是否正常运行的完整流程,适用于Java应用的Linux部署入门学习。
|
人工智能 自然语言处理 机器人
机器人研发与AI集成的加速策略:模块化生态创新革命
法思诺创新专注于机器人研发与AI集成的加速策略,推动模块化生态革命。通过软硬件分层协作,将机器人分为“躯体操作系统”和“场景思维芯片”,解决当前研发复杂、成本高昂的问题。文章分析机器人研发现状、模块化分工优势及场景芯片应用,并展望未来机器人产业的“智能机时刻”。法思诺提供创新咨询与培训服务,助力企业破解技术难题,实现软硬一体化智能创新。关注法思诺,探索真创新之路。
502 0
|
8月前
|
存储 缓存 运维
一场FullGC故障排查
本文记录了一次由Full GC引发的CPU使用率飙升至104%的问题排查过程。通过分析JVM堆内存,发现大对象(List<Map>)导致老年代频繁被占满,进而触发Full GC。利用JProfiler定位到问题根源:Excel数据以低效结构加载至内存且长期驻留,造成内存膨胀。最终提出“治本”与“治标”两类解决方案,并总结了线上高CPU问题的排查思路与经验。
 一场FullGC故障排查
|
机器学习/深度学习 人工智能 算法
GSPO:Qwen让大模型强化学习训练告别崩溃,解决序列级强化学习中的稳定性问题
这是7月份的一篇论文,Qwen团队提出的群组序列策略优化算法及其在大规模语言模型强化学习训练中的技术突破
2076 0
GSPO:Qwen让大模型强化学习训练告别崩溃,解决序列级强化学习中的稳定性问题
|
小程序 JavaScript 容器
小程序封装拖拽菜单组件(uniapp拖拽排序,自定义菜单)
movable-area 是 uniapp 的可移动区域组件。它用于定义可移动视图容器,在其内部可拖拽移动子视图。
2131 1
|
3月前
|
缓存 监控 NoSQL
【Redis】Redis缓存三大核心问题:缓存穿透 / 击穿 / 雪崩(原因 + 解决方案)
本文系统解析Redis缓存三大高危问题:**穿透**(查不存在数据)、**击穿**(热点Key过期瞬间并发压库)、**雪崩**(大量Key集中失效或集群宕机)。深入剖析根因,提供分层防护方案——布隆过滤器+参数校验防穿透、永不过期+本地缓存防击穿、过期打散+高可用架构防雪崩,并强调全链路兜底与生产避坑要点。
|
存储 安全 Shell
深入浅出操作系统:从原理到实践
【9月更文挑战第21天】在数字时代的浪潮中,操作系统扮演着至关重要的角色。本文将深入探究操作系统的奥秘,从其基本概念和核心原理出发,逐步引导读者理解操作系统的工作机制。我们将通过生动的例子和实用的代码片段,揭示操作系统如何管理计算机硬件资源、提供用户接口以及确保系统安全与性能优化。无论你是初学者还是有一定基础的开发者,这篇文章都将为你打开一扇通往操作系统深层世界的大门。准备好跟随我们的脚步,一起探索这个让计算机变得生动起来的神奇软件吧!
657 8
|
3月前
|
存储 人工智能 数据库
AI智能体的开发技术
2026年,AI智能体已演进为融合规划、记忆、工具使用与协同的复杂系统。依托LangChain、AutoGen等框架,结合大模型、RAG、多模态感知与自愈能力,实现端云协同与自主决策。初学者可从LangChain入门,企业级开发需聚焦多智能体与长期记忆优化。(239字)