SpringBoot中的Scheduled定时任务是Spring Boot中非常常用的特性,用来执行一些比如日切或者日终对账这种定时任务

下面说说使用时要注意的Scheduled的几个特性

Scheduled的执行方式

Scheduled按照顺序执行,对于某个task未做配置的话只会起一个线程去执行,也就是说当你某个任务在处理中阻塞了,哪怕轮询时间再次到达,Spring也不会再起线程执行该任务,而是会等待上次任务执行完毕,所以请不要在Scheduled的task中做一些比较需要频繁触发的易失败,易阻塞,易超时操作,避免任务无法正常轮询执行

Scheduled中的线程池

Scheduled执行可以通过Spring Boot提供的配置来配置定时任务执行的线程池等信息,如果未做配置的话,根据我测试,所有定时任务仅有一个线程去执行,也就是说如果某个task阻塞,其他task都将得不到执行。具体配置方法如下

@Configuration
@EnableScheduling
public class SchedulerTaskConfiguration implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
scheduledTaskRegistrar.setScheduler(taskExecutor());
} @Bean
public Executor taskExecutor() {
//线程池大小
return Executors.newScheduledThreadPool(10);
}
}

但是哪怕是配置了线程池,也只是降低了多个task之间执行的影响,对于单个task来说,哪怕配置了线程池,依旧会因为上次执行的阻塞影响到下一次触发

Scheduled的执行频率

Scheduled的执行频率可以由2种方式控制,一种为在@Scheduled中添加fixedRate属性,即@Scheduled(fixedRate = 10),数字为执行的间隔毫秒,也就是多少毫秒执行一次

另一种为添加cron属性,属性值为cron表达式,可以通过cron表达式指定为具体某年某月某分某秒,也可以通过cron表达式指定为间隔几小时或几分钟执行一次,如*@Scheduled(cron = "0 0 1 * * ")

Spring Boot Scheduled定时任务特性的更多相关文章

  1. Spring Boot配置定时任务

    在项目开发过程中,经常需要定时任务来做一些内容,比如定时进行数据统计(阅读量统计),数据更新(生成每天的歌单推荐)等. Spring Boot默认已经实现了,我们只需要添加相应的注解就可以完成定时任务 ...

  2. 【Spring Boot】定时任务

    [Spring Boot]定时任务 测试用业务Service package com.example.schedule.service; import org.springframework.ster ...

  3. spring boot 创建定时任务

    @Scheduled默认创建的线程是单线程,任务的执行会受到上一个任务的影响,创建定时任务也比较简单 123456789101112 @Component@Configuration //1.主要用于 ...

  4. Spring Boot提供的特性

    一.导览 本文主要按以下模块介绍spring Boot(1.3.6.RELEASE)提供的特性. SpringApplication类 外部化配置 Profiles 日志 开发WEB应用 Securi ...

  5. spring boot @Scheduled未生效原因以及相关坑、及相对其他定时任务架构的优势

    在spring boot中,支持多种定时执行模式(cron, fixRate, fixDelay),在Application或者其他Autoconfig上增加@EnableScheduling注解开启 ...

  6. Spring Boot:定时任务

    在我们开发项目过程中,经常需要定时任务来帮助我们来做一些内容, Spring Boot 默认已经帮我们实行了,只需要添加相应的注解就可以实现 1.pom 包配置 pom 包里面只需要引入 Spring ...

  7. Spring boot创建定时任务

    基于spring boot的应用创建定时任务不要太简单,给一个类加上@Configuration @EnableScheduling注解,然后给该类需要定时执行的方法加上@Scheduled(cron ...

  8. Spring Boot (29) 定时任务

    使用场景:数据定时增量同步,定时发送邮件,爬虫定时抓取 定时任务概述 定时任务:顾名思义就是在特定/指 定的时间进行工作,比如我们的手机闹钟,他就是一种定时的任务. 实现方式: 1.Timer:JDK ...

  9. 【Spring Boot学习之六】Spring Boot整合定时任务&异步调用

    环境 eclipse 4.7 jdk 1.8 Spring Boot 1.5.2一.定时任务1.启动类添加注解@EnableScheduling 用于开启定时任务 package com.wjy; i ...

随机推荐

  1. gnuplot取消曲线标题

    plot 'File.dat' using 1:2 notitle或者 plot 'File.dat' using 1:2 title ""

  2. vue 属性绑定 v-bind

    属性绑定 v-bind 可以通过v-bind将属性值与数据绑定,这样就可以统一化管理 通过这样我们就可以直接访问跳转到百度页面 同样的这个值我们也可以通过事件进行改变 这样就可以方便我们做一些其它的操 ...

  3. Flink读写Redis(一)-写入Redis

    项目pom文件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w ...

  4. 手把手教你配置KVM服务器

    1 Ubuntu系统安装 1.1 制作启动盘 准备一个U盘,将其清空后,去官网下载Ubuntu18.04系统的iso镜像文件,并将其拷进U盘.然后下载一个UltralOS软碟通工具,完成安装后打开软碟 ...

  5. 嵌入式开发笔记——调试组件SEGGER_RTT

    一.前言 在嵌入式开发过程中,经常会通过打印输出一些调试信息来调试参数.查找问题等,通常我的做法都是使用芯片的串口硬件设备配合串口助手软件来进行调试.但是这次项目的PCB硬件设计并未预留串口调试接口, ...

  6. CSRF学习

    前提环境:网站存在CSRF漏洞(也就是过于相信访问请求,只判断了用户是否存在cookie,并未判断请求的发起者) CSRF攻击原理,用户A需要转账,用户A正常向银行网站发送请求登录,登录成功后银行网站 ...

  7. Java 从 Map 到 HashMap 的一步步实现

    Java 从 Map 到 HashMap 的一步步实现 一. Map 1.1 Map 接口 在 Java 中, Map 提供了键--值的映射关系.映射不能包含重复的键,并且每个键只能映射到一个值. 以 ...

  8. Core3.0返回的数据格式xml或json

    前言 此方法从百度得,原文链接找不到了 步骤 //WebAPI接口返回xml格式,由Accept.application决定 services.AddMvc(opt => { opt.Respe ...

  9. 【命令】top命令

    功用: <---实时动态地查看系统的整体运行情况,两个命令都是查看运行状况,但是htop更加易用---> TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命 ...

  10. CSS的各种重要属性

    CSS属性图 01文字属性 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...