在日常项目运行中,我们总会有需求在某一时间段周期性的执行某个动作。比如每天在某个时间段导出报表,或者每隔多久统计一次现在在线的用户量。在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 (七)相关推荐

  1. springboot 定时任务schedule

    测试版本 1.5 和 2.0.4 完全一样 两步 1. 配置类 2.job 1.配置类 import org.springframework.context.annotation.Bean; impo ...

  2. SpringBoot定时任务简单应用

    SpringBoot定时任务可以用于周期性重复工作的编写,其应用简单,能满足绝大多数需求.在Java中实现定时任务主要有三种实现形式:一是使用JDK 自带的 Timer,二是使用第三方组件 Quart ...

  3. SpringBoot定时任务 - 集成quartz实现定时任务(单实例和分布式两种方式)

    最为常用定时任务框架是Quartz,并且Spring也集成了Quartz的框架,Quartz不仅支持单实例方式还支持分布式方式.本文主要介绍Quartz,基础的Quartz的集成案例本,以及实现基于数 ...

  4. 定时任务(Schedule的使用)

    1.new Timer().schedule(new TimerTask(), 2000);//定时任务只执行一次,如何循环调用呢? 可以在new TimerTask的run方法中再new 新的Tim ...

  5. SpringBoot定时任务升级篇(动态添加修改删除定时任务)

    (1)思路说明: (a)首先这里我们需要重新认识一个类ThreadPoolTaskScheduler:线程池任务调度类,能够开启线程池进行任务调度. (b)ThreadPoolTaskSchedule ...

  6. SpringBoot定时任务@Scheduled注解详解

    SpringBoot定时任务@Scheduled注解详解 项目开发中,经常会遇到定时任务的场景,Spring提供了@Scheduled注解,方便进行定时任务的开发 概述 要使用@Scheduled注解 ...

  7. Springboot定时任务 @Scheduled

    我们在平常项目开发中,经常会用到周期性定时任务,这个时候使用定时任务就能很方便的实现.在SpringBoot中用得最多的就是Schedule. 一.SpringBoot集成Schedule 1.依赖配 ...

  8. SpringBoot定时任务实现的两种方式介绍

    今天给大家介绍SpringBoot定时任务实现的几种方式,希望对大家能有所帮助! 1.SpringTask 用法 框架介绍:SpringTask是Spring自带的轻量级定时任务工具,相比于Quart ...

  9. schedule php,PHP Laravel定时任务Schedule【干货】

    下面由Laravel教程栏目给大家介绍PHP Laravel定时任务Schedule,希望对需要的朋友有所帮助! 前提:本文方法是利用Linux的crontab定时任务来协助实现Laravel调度(M ...

最新文章

  1. 趣谈 23 种设计模式(多图 + 代码)
  2. 不要活在别人的生活里(摘自开复网)
  3. 数据结构与算法 -- 链表
  4. 【LeetCode笔记 - 每日一题】334. 递增的三元子序列(Java、偏思路)
  5. 深入浅出mfc_深入浅出HBase系列(一)
  6. android电视怎么升级失败,智能电视升级失败,原因都在这里!
  7. 【报告分享】2020年5G芯片行业研究报告.pdf(附下载链接)
  8. 程序员的代码为什么永远写不完?
  9. 文本视图(UITextView)占位符Swift
  10. 关于Android 的内存泄露及分析
  11. android 缓冲区,android – 超过最小排队缓冲区数
  12. MSsql差异备份总结
  13. hdmi tv 信息 的edid_HDMI EDID解读
  14. 出现504怎么办?由于服务器更新导致的博客报504错误[详细记录]
  15. 《决战大数据》读书笔记(一) 收集数据和使用数据要有关联
  16. python这个语言值得学吗_python和java哪个更值得学
  17. 年薪100万?纯属忽悠!!但年薪60万真不是个梦
  18. 并发与多线程相关知识点梳理
  19. VLC播放画质延迟改善方法
  20. python k线图和指标_量化交易中,如何使用Python画K线、成交量、买卖点【邢不行】...

热门文章

  1. phpmemcache
  2. oracle 自定义函数 返回一个表类型
  3. python实现第一个web_使用Python的Flask框架来搭建第一个Web应用程序
  4. qiankun 传统项目配置_微前端 qiankun 项目实践
  5. mysql条件填充命令_MySQL如何填充范围内的缺失日期?
  6. 适合节日促销的海报设计PSD分层模板|夜晚烟花,浓浓喜庆氛围
  7. 金色装饰素材,用这个技巧创造节日的感觉,完美
  8. 配色方案专辑上线,宠溺设计师的好素材!
  9. UI设计干货素材|轻松搞定页面分页符(指示器)的设计
  10. 实物贴图风格拟物图标素材,高逼格即显