spring-boot触发器使用
在开触发器时,会自动开启一个线程处理任务。不用担心和主程序的阻塞问题,但需注意任务之间的阻塞问题,如果是异步则会为每个任务都开启,无需担心任务之间的阻塞问题。
- 在spring-boot启动类上添加
@EnableScheduling
注解,代表开启定时器,图1。 - 单纯只做一个任务且项目启动时就开始或者延时一段时间开始,在需要做任务的类上添加
@Component
注解,让spring-boot扫码组件,在方法上注解@Scheduled(initialDelay = 1000,fixedDelay = 2000)
第一个参数是延迟多久开始,第二个参数是间隔多久执行一次,图2。 - 如果有多个任务执行,可能需要开线程执行任务,这时只需在任务类上多加一个
@EnableAsync
注解和任务方法上@Async
即可,图3。 - 需要指定时间启动,在任务方法上加
@Scheduled(cron = "0,5 6/1 18 10 8 2")
即可,再根据需要写cron表达式。其中
依次是秒 分 时 天 月 星期(1代表星期1,2代表星期2)
","代表这个和这个都要执行
"/“代表左边这个时间开始,每隔”/"右边的数就执行一次,代表通配,什么都执行
全都为""时,就没过1s执行一次
这是spring的只有6个域,图4。
图1,启动类添加注解
@EnableScheduling
@SpringBootApplication
public class TimApplication {public static void main(String[] args) {SpringApplication.run(TimApplication.class, args);}
}
图2,单个任务,当两个任务同时时,会等待前一个执行完再执行
@Component
public class NoThread {@Scheduled(initialDelay = 1000,fixedDelay = 2000)public void pt(){try {Thread.sleep(5000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("我是pt");}@Scheduled(initialDelay = 1000,fixedDelay = 2000)public void pt1(){try {Thread.sleep(5000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("我是pt1");}
}
图3,也是两个任务同时进行,但是采用异步,不用等待前一个执行就可执行
@EnableAsync
@Component
public class Threads {@Async@Scheduled(initialDelay = 1000,fixedDelay = 2000)public void pt(){try {Thread.sleep(5000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("我是pt2");}@Async@Scheduled(initialDelay = 1000,fixedDelay = 2000)public void pt1(){try {Thread.sleep(5000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("我是pt3");}
}
图4,有定时需求启动时采用,下面的cron代表8月10号周2的下午17点42分0秒和5秒开始输出一次,且开始每过1分钟继续执行
@EnableAsync
@Component
public class cron {//依次是秒 分 时 天 月 星期(1代表星期1,2代表星期2)// ","代表这个和这个都要执行// "/"代表左边这个时间开始,每隔"/"右边的数就执行一次,*代表通配,什么都执行// 全都为"*"时,就没过1s执行一次@Scheduled(cron = "0,5 42/1 17 10 8 2")@Asyncpublic void pt4(){System.out.println("我是pt4");}
}
spring-boot触发器使用相关推荐
- Spring Boot 整合 Quartz 实现 Java 定时任务的动态配置
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 首先说下这次主题,动态配置.没接触过定时任务的同学可以先看 ...
- Spring Boot 2.0 热部署指南
Spring Boot 2.0 支持热部署,实现方法很简单 Spring Boot 2.0 有几种热重载的选项. 推荐的方法是使用spring-boot-devtools 因为它提供了额外的开发时间功 ...
- Spring Boot定时任务应用实践
在Spring Boot中实现定时任务功能,可以通过Spring自带的定时任务调度,也可以通过集成经典开源组件Quartz实现任务调度. 一.Spring定时器 1.cron表达式方式 使用自带的定时 ...
- Spring Boot中使用PostgreSQL数据库
在如今的关系型数据库中,有两个开源产品是你必须知道的.其中一个是MySQL,相信关注我的小伙伴们一定都不陌生,因为之前的Spring Boot关于关系型数据库的所有例子都是对MySQL来介绍的.而今天 ...
- Spring Boot Serverless 实战系列“架构篇” | 光速入门函数计算
作者 |:西流(阿里云函数计算专家) Spring Boot 是基于 Java Spring 框架的套件,它预装了 Spring 一系列的组件,开发者只需要很少的配置即可创建独立运行的应用程序. 在云 ...
- 在Spring Boot中使用内存数据库
文章目录 H2数据库 HSQLDB Apache Derby SQLite 在Spring Boot中使用内存数据库 所谓内存数据库就是可以在内存中运行的数据库,不需要将数据存储在文件系统中,但是相对 ...
- Spring Boot Serverless 实战系列“架构篇” 首发 | 光速入门函数计算
简介:如何以 Serverless 的方式运行 Spring Boot 应用? 作者 | 西流(阿里云函数计算专家) Spring Boot 是基于 Java Spring 框架的套件,它预装了 Sp ...
- 使用 CODING 进行 Spring Boot 项目的集成
本文作者:CODING 用户 - 高文 持续集成 (Continuous integration) 是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可 ...
- @scheduled注解配置时间_Java开发重写Spring Boot定时任务,支持可动态调整执行时间...
Spring Boot应该是目前最火的java开源框架了,它简化了我们创建一个web服务的过程,让我们可以在很短时间.基本零配置就可以启动一个web服务. 定时任务在我们平常的业务开发用的非常多,Sp ...
- spring boot集成Quartz实现定时任务
简介 Quartz是一款功能强大的任务调度器,Quartz有两个比较核心的组件:Job 和 Trigger. Quartz的三个基本要素 Scheduler:调度器,所有的调度都是由它来控制. Tri ...
最新文章
- 精确微妙计时minicom 源码节选
- linux——grep、sed、awk整理及其比较
- pdf常用字体包 -baijiahao_如何给PDF文档添加和插入页码?
- VLSM(可变长子网掩码)图表
- Microsoft .Net Remoting系列专题之二
- Flutter 入门指北(Part 9)之弹窗和提示(SnackBar、BottomSheet、Dialog)
- TCP慢开始与拥塞避免
- java我的世界损坏的种子,我的世界:5分钟让你通关游戏的种子,大神用这种子破了世界纪录...
- 方法论 | 多因子策略的五大讨论(思维导图收藏版)
- office 打开时蹦出错误:无法读取源文件或磁盘
- Android 权限的一个类型系统模型
- 办公技巧:10个WORD神操作,值得收藏
- 路由器 三层交换机 网关有什么区别
- win7无损分区和硬盘分区调整合并
- vue 动态渲染图片 不出来
- 轻博客系统 doudangQb
- Hadoop原理 之 数据完整性
- 《扫黑风暴》全网爆火!用Python具体分析一下它怎么火起来的?你喜欢看吗?
- PPT提示缺少字体怎么解决?
- Windows系统编译GSL2.7用于C语言编程(2022.5.8)