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

本文共 1179 字,大约阅读时间需要 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;
@Service
public 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/

你可能感兴趣的文章
numpy、cv2等操作图片基本操作
查看>>
numpy中的argsort的用法
查看>>
NumPy中的精度:比较数字时的问题
查看>>
numpy判断对应位置是否相等,all、any的使用
查看>>
Numpy多项式.Polynomial.fit()给出的系数与多项式.Polyfit()不同
查看>>
Numpy如何使用np.umprod重写range函数中i的python
查看>>
numpy学习笔记3-array切片
查看>>
numpy数组替换其中的值(如1替换为255)
查看>>
numpy数组索引-ChatGPT4o作答
查看>>
numpy最大值和最大值索引
查看>>
NUMPY矢量化np.prod不能构造具有超过32个操作数的ufunc
查看>>
Numpy矩阵与通用函数
查看>>
numpy绘制热力图
查看>>
numpy转PIL 报错TypeError: Cannot handle this data type
查看>>
Numpy闯关100题,我闯了95关,你呢?
查看>>
nump模块
查看>>
Nutch + solr 这个配合不错哦
查看>>
NuttX 构建系统
查看>>
NutUI:京东风格的轻量级 Vue 组件库
查看>>
NutzCodeInsight 2.0.7 发布,为 nutz-sqltpl 提供友好的 ide 支持
查看>>