博客
关于我
spring 定时任务@Scheduled注解(代码超详细)和串并行配置
阅读量:367 次
发布时间:2019-03-04

本文共 1171 字,大约阅读时间需要 3 分钟。

Spring @Scheduled 定时任务使用指南

一、@Scheduled 注解的使用方法

在 Spring 应用中,使用 @Scheduled 注解可以轻松配置定时任务。以下是基本使用方法:

1. 注解驱动配置

在配置文件中添加以下内容,开启定时任务支持:

  • task:annotation-driven:自动检测方法注解的定时任务。
  • task:scheduler:配置线程池,调整定时任务的并行执行。

2. 定时任务的配置

在需要定时执行的类上添加 @Scheduled 注解:

import org.springframework.scheduling.annotation.Scheduled;import org.springframework.stereotype.Service;@Servicepublic class ScheduledService {        @Scheduled(cron="0 0 10 * * ?")    public void executeTask() {        // 定时任务逻辑...    }}
  • cron表达式:用于定义任务执行的时间规则。

二、Cron 表达式详解

Cron 表达式是定义定时任务的语言,支持复杂的时间规则。每个字段由空格分隔,支持以下特殊字符:

字段 允许值 特殊字符
秒 0-59 , - * /
分钟 0-59 , - * /
小时 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 , - * /
星期 1-7 , - * ? / L C #
年 1970-2099 , - * /

1. 常见 Cron 示例

  • 每5秒执行一次:0/5 * * * * ?
  • 工作日每半小时:0 0/30 9-17 * * ?
  • 每周三中午12点:0 0 12 ? * WED

2. 特殊字符解析

  • *:表示所有可能值。
  • ?:表示“非明确值”,适用于日期和星期。
  • -:指定范围。
  • ,:列出多个值。
  • /:指定增量值。
  • L:表示“最后”(day-of-month或day-of-week)。
  • W:表示“最近工作日”(仅在日期字段中使用)。
  • C:与日历关联。
  • #:指定本月的某一天(仅在星期字段中使用)。

三、串并行配置

默认情况下,Spring 的定时任务是串行执行的。如果需要并行执行,需在配置文件中设置线程池:

这样可以同时执行多个定时任务,提升效率。

四、Cron 表达式最佳实践

  • 简洁明了:使用最少字符即可满足需求。
  • 模糊匹配:使用 * 代替具体值,扩大匹配范围。
  • 特殊字符谨慎:避免复杂表达式,确保可读性。

通过合理配置 Cron 表达式,可以创建出精准的定时任务。

转载地址:http://izdg.baihongyu.com/

你可能感兴趣的文章
Python:将 HEX 字符串转换为字节
查看>>
Python:将列表与范围列表合并
查看>>
Python:将列表列表初始化为一定大小,
查看>>
Python:带有生成器的给定集合的幂集
查看>>
Python:按字符的位置拆分字符串
查看>>
Python:替换嵌套字典中的值
查看>>
Python:爬取数据出现response.status_code为403解决方法
查看>>
Python:爬取数据出现response.status_code为418解决方法
查看>>
Python:生成“元组集“;来自“元组列表“;不考虑顺序
查看>>
Python:生成具有趋势的随机时间序列数据(例如周期性、指数衰减等)
查看>>
Python:用渐进式数字重命名列表中的重复项而不对列表进行排序
查看>>
Python:矩形参数无效
查看>>
Python:语法进阶
查看>>
Python:调用复制函数时调用 Python 对象时超出了最大递归深度
查看>>
Python:这两个 import 语句有什么区别?
查看>>
Python:通过串口从 Velleman k8090 读取数据
查看>>
python:遍历具有列表值的字典
查看>>
Python:降低精度 pandas 时间戳数据帧
查看>>
python:非阻塞子进程,检查标准输出
查看>>
PythonABC多重继承
查看>>