Spring多线程通过@Scheduled实现定时任务

下面就来详细讲解“Spring多线程通过@Scheduled实现定时任务”的完整攻略。

什么是@Scheduled

@Scheduled 是一种方便的 Spring 内置注解,可以让你在应用程序中创建定时任务。使用@Scheduled 注解,你可以指定一个固定的延迟、一个固定的间隔(以秒为单位)或一个 cron 表达式(更完整的定时任务调度方法)来触发注解的方法。

如何使用@Scheduled实现定时任务

使用 @Scheduled 实现定时任务有两种方法:

  1. 基于方法级别的定时任务
  2. 基于注解方式的定时任务

基于方法级别的定时任务

方法级别的定时任务需要将 @Scheduled 注解应用于需要定时执行的方法上。其语法格式如下:

@Scheduled(fixedDelay = 5000)
public void doSomething() {
    // 定时执行的任务代码
}

这里我们以一个定时输出当前时间的例子进行说明:

@Component
public class SchedulerTask {

    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");

    /**
     * 间隔5秒钟执行
     */
    @Scheduled(fixedRate = 5000)
    public void reportCurrentTime() {
        System.out.println("现在时间:" + dateFormat.format(new Date()));
    }
}

在上述代码中,我们使用 @Scheduled(fixedRate = 5000) 注解来指定每隔 5 秒钟执行一次 reportCurrentTime() 方法,并输出当前的时间。

基于注解方式的定时任务

基于注解方式的定时任务需要在配置类中配置 @EnableScheduling 注解开启定时任务调度特性,并在需要定时执行任务的方法使用 @Scheduled 注解进行定时配置。其语法格式如下:

@Configuration
@EnableScheduling
public class SchedulerConfig {

    @Scheduled(cron = "*/5 * * * * ?")
    public void reportCurrentTime() {
        System.out.println("现在时间:" + dateFormat.format(new Date()));
    }
}

这里我们以一个每 5 秒钟输出当前时间的例子进行说明:

在核心配置类上标注 @EnableScheduling 注解来启用计划任务,然后在需要计划运行的方法上指定 cron 表达式来配置任务的调度计划。

两条实例说明

示例一

@Component
public class SchedulerTask {

    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");

    /**
     * 每 minute 执行一次
     */
    @Scheduled(cron = "0 * * * * ?")
    public void reportCurrentTime() {
        System.out.println("现在时间:" + dateFormat.format(new Date()));
    }
}

这个定时任务的点用的是 cron 表达式 0 * * * * ?,即每分钟执行一次。执行结果如下所示:

现在时间:15:01:00
现在时间:15:02:00
现在时间:15:03:00

示例二

@Configuration
@EnableScheduling
public class SchedulerConfig {

    @Scheduled(fixedDelayString = "PT10S")
    public void reportCurrentTime() {
        System.out.println("现在时间:" + dateFormat.format(new Date()));
    }
}

这个定时任务通过 fixedDelayString 属性间隔 10 秒钟执行一次,并输出当前时间。执行结果如下所示:

现在时间:15:25:50
现在时间:15:26:00
现在时间:15:26:10

总结

通过以上两个示例,我们可以看出如何通过 Spring 多线程来实现定时任务的。大致步骤包括:

  1. 创建一个 Spring Boot 应用
  2. 激活多线程模式,添加相关依赖
  3. 配置定时任务参数
  4. 编写定时任务代码
  5. 运行定时任务

通过实践,我们可以更好地掌握如何使用 Spring 多线程通过 @Scheduled 注解实现定时任务。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring多线程通过@Scheduled实现定时任务 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Spring MVC 学习 之 – URL参数传递详解

    Spring MVC 学习之 – URL 参数传递详解 在 Spring MVC 中,我们可以通过 URL 参数传递来传递数据。本文将详细讲解 Spring MVC 中 URL 参数传递的使用,包括如何获取 URL 参数、如何使用 @PathVariable 注解获取路径参数、如何使用 @RequestParam 注解获取请求参数,并提供两个示例说明。 获取…

    Java 2023年5月18日
    00
  • JAVA字符串拼接常见方法汇总

    JAVA字符串拼接常见方法汇总 为什么需要字符串拼接 在编程过程中,我们经常需要将字符串拼接成一个完整的字符串。字符串拼接是将多个字符串连接形成一个新的字符串的过程,通常使用加号(+)或StringBuilder类来实现。 字符串拼接方式一:使用加号(+)连接字符串 使用加号连接字符串是最基本的字符串拼接方法,它的语法格式如下: String str1 = …

    Java 2023年5月26日
    00
  • js中用cssText设置css样式的简单方法

    在JavaScript中使用style属性对元素进行样式设置是很常见的做法,但如果要添加多个属性或多条规则,就需要在每个语句中分别设置属性名称和属性值,这样代码就会十分冗长和复杂。此时,可以使用cssText属性一次性设置多个样式属性。 下面是一些可以帮助你了解如何使用cssText属性的攻略: 简介 在JavaScript中,每个元素都有一个style属性…

    Java 2023年6月15日
    00
  • 浅谈Java模板引擎性能对比

    浅谈Java模板引擎性能对比 简介 本文主要讨论Java模板引擎的性能对比,介绍常见的Java模板引擎及其性能特点,并通过两个示例来说明不同模板引擎的使用方式与性能表现。 常见Java模板引擎 常见的Java模板引擎有JSP、FreeMarker、Thymeleaf、Velocity等,这些引擎的性能特点各不相同。 JSP:JSP作为Java Web技术的重…

    Java 2023年6月16日
    00
  • 一文搞懂MyBatis多数据源Starter实现

    一文搞懂MyBatis多数据源Starter实现 多数据源在一些应用场景下非常常见,MyBatis也提供了多数据源的支持。但是对于开发者来说,要手动实现多数据源的切换非常繁琐,而且容易出错。MyBatis多数据源Starter可以帮助我们自动配置多数据源并提供切换功能。本文将对MyBatis多数据源Starter的使用进行详细讲解。 步骤一:添加依赖 首先,…

    Java 2023年5月20日
    00
  • Mysql字符集和排序规则详解

    Mysql字符集和排序规则详解 MySQL是当前最流行的数据库之一,对于数据存储乃至于展示,字符集和排序规则都是最基本的要素之一。 字符集(Character Set) MySQL中,字符集是一组字符的字符集合集合,也就是说,字符集是相互关联的一组字符,这些字符在计算机中用一定的方式进行存储和传输。MySQL中实现了多种字符集,具体可以在官方文档中查看。 在…

    Java 2023年6月1日
    00
  • idea中的Maven导包失败问题解决方案汇总

    下面我将详细讲解 “idea中的Maven导包失败问题解决方案汇总”的完整攻略,具体步骤如下: 1. 清理缓存 如果Maven导包失败,可以先尝试清理Maven的缓存: 依次点击File -> Settings -> Build, Execution, Deployment -> Build Tools -> Maven -> …

    Java 2023年5月20日
    00
  • Spring Boot启动过程全面解析(三)

    针对“SpringBoot启动过程全面解析(三)”这篇文章,我将进行以下详细讲解: 1. 文章简介 这篇文章主要讲解Spring Boot应用程序的启动过程。通过分析Spring Boot框架的源代码,介绍了Spring Boot启动时各个关键步骤的实现过程,帮助读者更好地理解Spring Boot框架的运作机制。 2. Spring Boot的静态资源加载…

    Java 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部