iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >SpringBoot-定时任务
  • 809
分享到

SpringBoot-定时任务

java教程SpringBoot 2014-06-07 08:06:51 809人浏览 无得
摘要

在我们实际开发项目的过程中,经常需要定时任务来帮我们做一些事情,例如每隔一小时统计新注册的用户数量、每天凌晨一点进行服务器缓存清理、每周五统计购买会员的用户数量等。SpringBoot在2.0版本之后,提供了非常方便的注解方式来编写定时任务

在我们实际开发项目的过程中,经常需要定时任务来帮我们做一些事情,例如每隔一小时统计新注册的用户数量、每天凌晨一点进行服务器缓存清理、每周五统计购买会员的用户数量等。

SpringBoot在2.0版本之后,提供了非常方便的注解方式来编写定时任务程序,无需添加任何配置文件和依赖关系,快速构建一个springBoot项目,添加注解如下:

@SpringBootApplication
@EnableScheduling
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

@EnableScheduling:开启对定时任务的支持

注解方式-单线程

创建SchedulerTask1类存放与task包下:

@Component
public class SchedulerTask1 {

    @Scheduled(cron = "*/6 * * * * ?")
    private void process(){
        System.out.println("SchedulerTask1 : " + LocalDateTime.now().toLocalTime() + "
线程 : " + Thread.currentThread().getName());
    }
}

创建SchedulerTask2类存放与task包下:

@Component
public class SchedulerTask2 {
    @Scheduled(fixedRate  = 3000)
    private void process(){
        System.out.println("SchedulerTask2 : " + LocalDateTime.now().toLocalTime() + "
线程 : " + Thread.currentThread().getName());
    }
}

@Scheduled 参数可以接受两种定时的设置,一种是我们常用的cron="*/6 * * * * ?",一种是 fixedRate = 3000,两种都表示每隔X秒打印一下内容。

fixedRate 说明

@Scheduled(fixedRate = 3000) :上一次开始执行时间点之后3秒再执行

@Scheduled(fixedDelay = 3000) :上一次执行完毕时间点之后3秒再执行

@Scheduled(initialDelay=1000, fixedRate=6000) :第一次延迟1秒后执行,之后按

fixedRate 的规则每6秒执行一次

Cron表达式参数分别表示:

秒(0~59) 例如0/5表示每5秒

分(0~59)

时(0~23)

日(0~31)的某天,需计算

月(0~11)

周几( 可填1-7 或 SUN/MON/TUE/WED/THU/FRI/SAT)

启动项目,执行结果如下:

SchedulerTask2 : 21:36:47.795008800
线程 : scheduling-1
SchedulerTask1 : 21:36:48.014888600
线程 : scheduling-1
SchedulerTask2 : 21:36:50.792887400
线程 : scheduling-1
SchedulerTask2 : 21:36:53.792697900
线程 : scheduling-1
SchedulerTask1 : 21:36:54.002684700
线程 : scheduling-1
SchedulerTask2 : 21:36:56.792517700
线程 : scheduling-1
SchedulerTask2 : 21:36:59.792606400
线程 : scheduling-1
SchedulerTask1 : 21:37:00.002598400
线程 : scheduling-1
SchedulerTask2 : 21:37:02.792423300
线程 : scheduling-1
SchedulerTask2 : 21:37:05.802238
线程 : scheduling-1
SchedulerTask1 : 21:37:06.002225200
线程 : scheduling-1

可以看到,当上面两个定时任务同时执行时,用的是同一个线程:scheduling-1,任务的执行时机会受上一个任务执行时间的影响。

注解方式-多线程

新建MultithreadScheduleTask类存放与task包下:

@Component
@EnableAsync
public class MultithreadScheduleTask {

    @Async
    @Scheduled(fixedDelay = 1000)
    public void first() throws InterruptedException {
        System.out.println("第一个定时任务开始 : " + LocalDateTime.now().toLocalTime() + "
线程 : " + Thread.currentThread().getName());
        Thread.sleep(1000 * 10);
    }

    @Async
    @Scheduled(fixedDelay = 2000)
    public void second() {
        System.out.println("第二个定时任务开始 : " + LocalDateTime.now().toLocalTime() + "
线程 : " + Thread.currentThread().getName());
        System.out.println();
    }

}

@EnableAsync:开启多线程

启动项目,运行结果如下:

第一个定时任务开始 : 21:48:47.121991300
线程 : task-1
第二个定时任务开始 : 21:48:47.121991300
线程 : task-2

第一个定时任务开始 : 21:48:48.121930600
线程 : task-3
第二个定时任务开始 : 21:48:49.114640
线程 : task-4

第一个定时任务开始 : 21:48:49.114640
线程 : task-5
第一个定时任务开始 : 21:48:50.119792400
线程 : task-6
第二个定时任务开始 : 21:48:51.119726900
线程 : task-7

第一个定时任务开始 : 21:48:51.129727800
线程 : task-8
第一个定时任务开始 : 21:48:52.130157200
线程 : task-2
第二个定时任务开始 : 21:48:53.120096500
线程 : task-4

第一个定时任务开始 : 21:48:53.140095
线程 : task-7
第一个定时任务开始 : 21:48:54.140429600
线程 : task-4
第二个定时任务开始 : 21:48:57.130710
线程 : task-1

--结束END--

本文标题: SpringBoot-定时任务

本文链接: https://www.lsjlt.com/news/3140.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot-定时任务
    在我们实际开发项目的过程中,经常需要定时任务来帮我们做一些事情,例如每隔一小时统计新注册的用户数量、每天凌晨一点进行服务器缓存清理、每周五统计购买会员的用户数量等。SpringBoot在2.0版本之后,提供了非常方便的注解方式来编写定时任务...
    99+
    2014-06-07
    java教程 SpringBoot
  • SpringBoot定时任务 @Scheduled详解
    博主在最近的开发中又遇到了关于定时调度的开发任务,在定时调度其实有很多的第三方平台可以接入,但是其实在SpringBoot有自带的定时任务注解@Scheduled。@Scheduled可以通过注解配置快速实现方法的定时调度,直接在方法加上@...
    99+
    2023-10-01
    spring boot java spring
  • SpringBoot中如何定时任务
    SpringBoot中如何定时任务,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。这篇文章将介绍怎么通过spring去做调度任务。构建工程创建一个Springbo...
    99+
    2023-06-19
  • SpringBoot定时任务怎么实现
    这篇文章主要讲解了“SpringBoot定时任务怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot定时任务怎么实现”吧!SpringBoot定时任务主要由两个注解完成...
    99+
    2023-06-05
  • Springboot如何实现定时任务
    这篇文章给大家分享的是有关Springboot如何实现定时任务的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。定时任务此处的定时,标注在方法上+注解,假如想修改生成环境的时间,不是很灵活,后面补充Quartz+bo...
    99+
    2023-06-17
  • springboot定时任务怎么创建
    如果你想了解更多关于springboot的知识,可以点击:JAVA教程使用SpringBoot创建定时任务非常简单,目前主要有以下三种创建方式:  一、基于注解(@Scheduled)  二、基于接口(SchedulingConfigure...
    99+
    2021-09-19
    java教程 SpringBoot
  • 详解SpringBoot定时任务功能
    目录一 背景二 动态定时任务调度三 多节点任务执行问题四 后记一 背景 项目中需要一个可以动态新增定时定时任务的功能,现在项目中使用的是xxl-job定时任务调度系统,但是经过一番对...
    99+
    2022-11-13
  • SpringBoot定时任务怎么使用
    在Spring Boot中使用定时任务,可以按照以下步骤进行操作:1. 在pom.xml文件中添加Spring Boot的定时任务依...
    99+
    2023-08-15
    SpringBoot
  • SpringBoot如何创建定时任务
    这篇文章主要介绍SpringBoot如何创建定时任务,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、静态定时任务(基于注解)基于注解来创建定时任务非常简单,只需几行代码便可完成。@Scheduled 除了支持灵活的...
    99+
    2023-05-30
    spring boot
  • Springboot异步任务和定时任务如何处理
    本文小编为大家详细介绍“Springboot异步任务和定时任务如何处理”,内容详细,步骤清晰,细节处理妥当,希望这篇“Springboot异步任务和定时任务如何处理”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1...
    99+
    2023-06-30
  • SpringBoot任务之定时任务相关知识总结
    01: 异步任务 03: 邮件任务 一、SpringBoot--任务:定时任务 项目开发中经常需要执行一些定时任务,比如需要在每天凌晨的时候, 分析一次前一天的日志信息,Spri...
    99+
    2022-11-12
  • springboot定时任务和异步任务怎么实现
    这篇文章主要介绍“springboot定时任务和异步任务怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“springboot定时任务和异步任务怎么实现”文章能帮助大家解决问题。异步任务简单案例...
    99+
    2023-06-27
  • SpringBoot中怎么使用定时任务
    本篇文章为大家展示了SpringBoot中怎么使用定时任务,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1. 线程实现利用线程可以设定休眠时间的方式可以实现简单的定时任务逻辑。  ...
    99+
    2023-06-02
  • SpringBoot+Quartz实现动态定时任务
    本文实例为大家分享了springBoot+Quartz实现动态定时任务的具体代码,供大家参考,具体内容如下 目前常用的几种任务调度 Timer,简单无门槛,一般也没人用。spring...
    99+
    2022-11-13
  • SpringBoot动态定时任务(完整版)
    本文定时任务功能(增、删、改、启动、暂停) 话不多说,直接上代码,你们直接CV就可以用!!!  执行定时任务的线程池配置类 import org.springframework.context.annotation.Bean;im...
    99+
    2023-08-30
    spring boot java spring
  • Springboot 异步任务和定时任务的异步处理
    目录1 前言2 异步任务设置3 定时任务配置4 总结1 前言 在 Springboot 中,异步任务和定时任务是经常遇到的处理问题方式,为了能够用好这两项配置,不干扰正常的业务,需要...
    99+
    2022-11-13
  • SpringBoot中如何整合定时任务和邮件任务
    这篇文章主要讲解了“SpringBoot中如何整合定时任务和邮件任务”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot中如何整合定时任务和邮件任务”吧!定时任务项目开发中经常...
    99+
    2023-06-08
  • SpringBoot任务之定时任务的知识点有哪些
    这篇文章主要为大家展示了“SpringBoot任务之定时任务的知识点有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SpringBoot任务之定时任务的知识点有哪些”这篇文章吧。一、Spri...
    99+
    2023-06-15
  • Java中怎么实现SpringBoot定时任务
    今天就跟大家聊聊有关Java中怎么实现SpringBoot定时任务,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. SpringBoot--任务:定时任务项目开发中经常需要执行一些...
    99+
    2023-06-20
  • SpringBoot结合XXL-JOB实现定时任务
    《从零打造项目》系列文章 工具 比MyBatis Generator更强大的代码生成器 ORM框架选型 SpringBoot项目基础设施搭建SpringBoot集成Mybatis项目实操SpringBoot集成Mybatis Pl...
    99+
    2023-08-16
    spring boot java mybatis
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作