SpringBoot定时任务Schedule (七)
在日常项目运行中,我们总会有需求在某一时间段周期性的执行某个动作。比如每天在某个时间段导出报表,或者每隔多久统计一次现在在线的用户量。在springboot中可以有很多方案去帮我们完成定时器的工作,有Java自带的java.util.Timer类,也有强大的调度器Quartz,还有SpringBoot自带的Scheduled,今天主要说说Scheduled。
定时器比较
框架名称 | Cron表达式 | 固定间隔执行 | 固定频率执行 | 任务持久化 | 难易度 |
---|---|---|---|---|---|
TimerTask | 不支持 | 支持 | 支持 | 不支持 | 一般 |
schedule | 支持 | 支持 | 支持 | 不支持 | 简单 |
Quartz | 支持 | 支持 | 支持 | 支持 | 难 |
在实际应用中,如果没有分布式场景(quartz 支持分布式, schedule 不支持(需要自己实现,用分布式锁),schedule跟spring结合的更好,还是很适用的。
创建schedule工程
使用IntelliJ IDEA创建helloschedule
点击finish完成项目的创建。
为了方便演示,使用@Slf4j输出日志,添加lombok引用,@Slf4j不清楚的可以看看SpringBoot(八)配置logback日志
添加export类。
package com.task.log;import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;import java.text.SimpleDateFormat;
import java.util.Date;/*** Created by toutou on 2018/10/20.*/
@Component
@Slf4j
public class export {@Scheduled(cron = "0 0/1 * * * ?")public void minuteExport(){log.debug("每分钟执行一次的任务:" + getDate());}@Scheduled(fixedRate = 5000)public void fiveSecondExport(){log.debug("每5秒执行一次:" + getDate());}@Scheduled(cron = "0/2 * * * * ?")public void twoSecondExport(){log.debug("每2秒执行一次:" + getDate());}@Scheduled(cron = "0 55 14 ? * *")public void regularTimeExport(){log.debug("每天上午14点55分执行:" + getDate());}private String getDate(){SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");return sdf.format(new Date());}
}
启动类中添加@EnableScheduling
注解,然后运行。
查看IntelliJ IDEA控制台日志和物理文件日志
如上图,简单的定时任务输出日志搭建完成。
SpringBoot定时任务Schedule (七)相关推荐
- springboot 定时任务schedule
测试版本 1.5 和 2.0.4 完全一样 两步 1. 配置类 2.job 1.配置类 import org.springframework.context.annotation.Bean; impo ...
- SpringBoot定时任务简单应用
SpringBoot定时任务可以用于周期性重复工作的编写,其应用简单,能满足绝大多数需求.在Java中实现定时任务主要有三种实现形式:一是使用JDK 自带的 Timer,二是使用第三方组件 Quart ...
- SpringBoot定时任务 - 集成quartz实现定时任务(单实例和分布式两种方式)
最为常用定时任务框架是Quartz,并且Spring也集成了Quartz的框架,Quartz不仅支持单实例方式还支持分布式方式.本文主要介绍Quartz,基础的Quartz的集成案例本,以及实现基于数 ...
- 定时任务(Schedule的使用)
1.new Timer().schedule(new TimerTask(), 2000);//定时任务只执行一次,如何循环调用呢? 可以在new TimerTask的run方法中再new 新的Tim ...
- SpringBoot定时任务升级篇(动态添加修改删除定时任务)
(1)思路说明: (a)首先这里我们需要重新认识一个类ThreadPoolTaskScheduler:线程池任务调度类,能够开启线程池进行任务调度. (b)ThreadPoolTaskSchedule ...
- SpringBoot定时任务@Scheduled注解详解
SpringBoot定时任务@Scheduled注解详解 项目开发中,经常会遇到定时任务的场景,Spring提供了@Scheduled注解,方便进行定时任务的开发 概述 要使用@Scheduled注解 ...
- Springboot定时任务 @Scheduled
我们在平常项目开发中,经常会用到周期性定时任务,这个时候使用定时任务就能很方便的实现.在SpringBoot中用得最多的就是Schedule. 一.SpringBoot集成Schedule 1.依赖配 ...
- SpringBoot定时任务实现的两种方式介绍
今天给大家介绍SpringBoot定时任务实现的几种方式,希望对大家能有所帮助! 1.SpringTask 用法 框架介绍:SpringTask是Spring自带的轻量级定时任务工具,相比于Quart ...
- schedule php,PHP Laravel定时任务Schedule【干货】
下面由Laravel教程栏目给大家介绍PHP Laravel定时任务Schedule,希望对需要的朋友有所帮助! 前提:本文方法是利用Linux的crontab定时任务来协助实现Laravel调度(M ...
最新文章
- 趣谈 23 种设计模式(多图 + 代码)
- 不要活在别人的生活里(摘自开复网)
- 数据结构与算法 -- 链表
- 【LeetCode笔记 - 每日一题】334. 递增的三元子序列(Java、偏思路)
- 深入浅出mfc_深入浅出HBase系列(一)
- android电视怎么升级失败,智能电视升级失败,原因都在这里!
- 【报告分享】2020年5G芯片行业研究报告.pdf(附下载链接)
- 程序员的代码为什么永远写不完?
- 文本视图(UITextView)占位符Swift
- 关于Android 的内存泄露及分析
- android 缓冲区,android – 超过最小排队缓冲区数
- MSsql差异备份总结
- hdmi tv 信息 的edid_HDMI EDID解读
- 出现504怎么办?由于服务器更新导致的博客报504错误[详细记录]
- 《决战大数据》读书笔记(一) 收集数据和使用数据要有关联
- python这个语言值得学吗_python和java哪个更值得学
- 年薪100万?纯属忽悠!!但年薪60万真不是个梦
- 并发与多线程相关知识点梳理
- VLC播放画质延迟改善方法
- python k线图和指标_量化交易中,如何使用Python画K线、成交量、买卖点【邢不行】...