Kiroの编程指南 Kiroの编程指南
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • Java8 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • Netty
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • RPC
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 虚拟机
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 从零带你写netty
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • Java8 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • Netty
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • RPC
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 虚拟机
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 从零带你写netty
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
  • 开发工具篇

    • idea设置

      • 配置篇
      • 快捷键篇
      • debug篇
      • 插件篇
    • 玩转Git

      • 基础知识梳理
      • Git配置相关操作
      • git修改已提交人的用户名和邮箱
      • git提交规范
      • 常见问题
    • Maven相关

      • Maven简介
      • Maven常用命令
      • 依赖管理
      • Maven生命周期与插件
      • Maven项目管理工具
    • vscode设置

      • 配置篇
    • nvm使用小结
    • Apifox使用小结
    • JMeter使用小记
  • 工具库篇

    • lombok工具库

      • lombok注解使用小结
      • Builder用法解析
    • EasyExcel小记

      • 文件导入
      • 文件导出
    • 极光推送学习
    • OkHttp学习
    • BigDecimal类详解
    • PdfBox学习
    • 定时任务相关
      • cron 表达式
        • 格式
        • 字段含义
        • 特殊字符
      • 何为单机定时任务和分布式定时任务
        • 单机定时任务
        • 分布式定时任务
        • 区别
      • 多线程执行定时任务
      • 在线表达式生成器
  • 开发技巧篇

    • 常见数据校验注解
    • 字符串拼接的5种方式
    • 遍历集合的N种方式
    • 集合使用注意事项总结
    • MP使用小记
    • Stream流技巧总结
    • 字符串处理最佳实践
    • 自制代码生成器
    • 幂等性问题分析
    • SQL语句优化
    • 时间字段处理小记
    • Curl用法解析
    • 列表分页的两种实现方案
    • HashMap根据value获取key
    • Map的7种遍历方式
    • 唯一索引和逻辑删除冲突解决方法
    • 正则表达式
    • 二维码扫码登录学习
    • 脱敏最佳实践
    • 日志记录相关
  • 工具类系列

    • 手写一个文件阅读器
    • 手写一个运行耗时计算器
    • 自定义实现Java Bean属性中列表元素格式校验注解及其实现
    • 父子工程项目搭建
  • 随笔

    • HttpServletRequest知识小结
    • Spring MVC 项目构建流程
    • 虚拟机固定ip地址
    • 项目部署
    • 深入理解数组
    • IIS使用小记
    • From的两种类型解析
    • 开发疑惑
    • 开发小记
    • bug解决
  • 开发日常
  • 工具库篇
Kiro
2024-07-11
目录

定时任务相关

# 定时任务相关

# cron 表达式

# 格式

cron 表达式是一种用于配置定时任务(计划任务)的字符串,它由六个或七个字段组成,表示时间表,格式如下:

// 秒 分 时 日 月 星期 年 
* * * * * * ?
1
2

# 字段含义

每个字段由一个星号(*)或具体值组成,字段之间用空格分隔。以下是每个字段的含义:

  1. 秒(0 - 59):

    • 任务执行的秒数,可以是单个数字,范围列表,或特殊字符。
  2. 分(0 - 59):

    • 任务执行的分钟数。
  3. 小时(0 - 23):

    • 任务执行的小时数。
  4. 日期(1 - 31):

    • 任务执行的月份中的日期。
  5. 月份(1 - 12 或 JAN-DEC):

    • 任务执行的月份。
  6. 星期几(0 - 7 或 SUN-SAT):

    • 任务执行的星期几,0 或 7 表示星期日。
  7. 年份(可选字段):

    • 如果需要指定年份,可以在表达式的末尾添加年份字段。

# 特殊字符

特殊字符包括:

  1. 星号(*): 表示匹配任意值。例如,* 在分钟字段中表示每分钟都执行。
  2. 问号(?): 表示不指定值,通常用在日期和星期几字段,通常用于避免冲突。
  3. 连字符(-): 表示一个范围,例如 10-12 表示从 10 到 12。
  4. 斜线(/): 表示起始时间开始,每隔一定的间隔执行,例如 0/30 表示每 30 分钟。
  5. 逗号(,):用于分隔多个值。例如,1,3,5 在小时字段中表示 1 点、3 点和 5 点执行。
  6. L: 表示 “Last”,例如在日期字段表示一个月的最后一天。

以下是一些具体的例子:

  • 0 * * * * ?: 每分钟执行一次。
  • 0 0/30 * * * ?: 每 30 分钟执行。
  • 0 0 * * * ?:整点执行。
  • 0 0-59/2 * * * ?: 每小时的第 2 分钟开始,每 2 分钟执行一次。
  • 0 8,14 * * * ?: 每天的上午 8 点和下午 2 点执行。
  • 0 0/5 14 * * ?: 在下午 2 点到 3 点之间,每 5 分钟执行一次。
  • 0 0 9-17 * * ?: 从上午 9 点到下午 5 点,每小时的整点执行。
  • 0 15 10 L \* ?:每月最后一日的上午 10:15 执行。
  • 0 15 10 ? * 6#3: 每月的第三个星期五上午 10:15 执行。

# 何为单机定时任务和分布式定时任务

单机定时任务和分布式定时任务是两种不同的任务调度方式,它们在计算机系统中用于自动执行预定的任务。下面是它们的基本定义和区别:

# 单机定时任务

  • 定义:单机定时任务是指在单个计算机或服务器上运行的定时任务。这种任务通常由操作系统的调度器或特定的任务调度软件来管理。
  • 特点:
    • 单一资源:单机定时任务只能在一个节点上运行,因此它只能利用该节点的资源。如果任务量超出了这个节点的处理能力,就可能导致性能瓶颈或任务延迟。
    • 串行处理:任务通常是串行执行的,这意味着它们一个接一个地运行,而不是同时进行。
    • 简单性:管理和配置相对简单,因为所有任务都在同一个系统上运行。
    • 局限性:如果任务量很大或需要高可用性,单机可能无法满足需求。
    • 容错性较低:如果单机发生故障,所有任务都可能受到影响,因为没有其他节点可以接管任务。

# 分布式定时任务

  • 定义:分布式定时任务是指在多个计算机或服务器上协调运行的定时任务。这种任务通常由分布式任务调度系统来管理,如 Apache Hadoop 的 Oozie、Apache Storm、Quartz 等。
  • 特点:
    • 扩展性:可以跨多个节点分布任务,提高系统的处理能力和容错性。
    • 高可用性:通过在不同的节点上运行任务,可以减少单点故障的风险。
    • 复杂性:管理和配置比单机定时任务更复杂,需要考虑任务的分配、节点间的通信和数据同步等问题。
    • 负载均衡:可以根据节点的负载情况动态分配任务,优化资源使用。
    • 容错性:如果某个节点发生故障,任务可以被重新分配到其他节点上执行,从而提高系统的稳定性和可靠性。

# 区别

  • 多节点资源:分布式定时任务可以在多个节点(服务器或计算机)上运行,这意味着它可以利用这些节点上的所有资源,包括CPU、内存、存储和网络带宽等。
  • 并行处理:任务可以在不同的节点上并行执行,从而提高处理速度和效率。
  • 容错能力:分布式系统通常具有更好的容错能力,因为任务可以在其他节点上重新调度。
  • 可扩展性:分布式系统更容易扩展,可以通过增加节点来处理更多的任务。
  • 管理难度:分布式定时任务的管理和配置通常比单机定时任务更复杂。

# 多线程执行定时任务

  • SpringBoot使用@Scheduled注解实现定时任务_springboot scheduled注解-CSDN博客 (opens new window)

  • spring boot @Scheduled未生效原因以及相关坑、及相对其他定时任务架构的优势 - zhjh256 - 博客园 (cnblogs.com) (opens new window)

  • 浅析SpringBoot中使用@scheduled定时执行任务需要注意的单线程的坑 - 古兰精 - 博客园 (cnblogs.com) (opens new window)

  • @Scheduled 的一些坑_scheduledcron失效-CSDN博客 (opens new window)

# 在线表达式生成器

  • Cron - 在线Cron表达式生成器 (ciding.cc) (opens new window)
  • 在线Cron表达式生成器 - 码工具 (matools.com) (opens new window)
  • 在线Cron表达式生成器 (qqe2.com) (opens new window)
  • quartz/Cron/Crontab表达式在线生成工具-BeJSON.com (opens new window)
上次更新: 2025/4/29 05:15:44
PdfBox学习
常见数据校验注解

← PdfBox学习 常见数据校验注解→

Theme by Vdoing | Copyright © 2022-2025 Kiro | 豫ICP备2021022101号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式