springboot实现定时任务@Scheduled方式

 更新时间:2024年07月10日 10:16:47   作者:平平常常一般牛  
这篇文章主要介绍了springboot实现定时任务@Scheduled方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

@Scheduled

只适合处理简单的计划任务,不能处理分布式计划任务。

优势:是spring框架提供的计划任务,开发简单,执行效率比较高。

且在计划任务数量太多的时候,可能出现阻塞,崩溃,延迟启动等问题

  • 启动类中加入@EnableScheduling
  • 要开启定时任务的方法上加入@Scheduled
  • 设置任务执行的时间间隔

@EnableScheduling注解的作用是启用Spring的计划任务执行能力。

注意:

@EnableScheduling只应用于它的本地应用程序上下文,允许在不同级别选择性地调度bean。

@Scheduled标记要调度的方法的注释。必须指定cron、fixedDelay或fixedRate属性中的一个。

带注释的方法必须没有参数。 它通常有一个void返回类型; 如果不是,则通过调度器调用返回值时将被忽略。

比较常用的有两种方式去设置时间间隔,fixedRate和cron表达式

第一种:设置时间间隔的方式是fixedRate属性

这种方式比较简单,只适用于对时间掌控不是很高的情况下,例如,每分钟执行一次,部分白天还是黑夜。

@Scheduled(fixedRate = 301000)

  • 表示每30秒执行一次。
  • 这个也是按照时间进制来的,1000代表是毫秒进制30代表就是30秒,若是想每小时执行一次也是可以继续16060*1000。
	@Scheduled(fixedRate = 30*1000)
    public void he(){
        System.out.println("女神吃药"+ DateFormat.getDateTimeInstance().format(new Date()));
    }

第二种:cron表达式

	@Scheduled(cron = "* * 9-22 * * ?")
    public void show(){
        System.out.println("女神喝水"+ DateFormat.getDateTimeInstance().format(new Date()));
    }

上述cron表达式代表的是:我每个月 每天 9-22时 的每分每秒都执行一次。

cron表达式的时间格式是cron= “秒 分钟 小时 天 月 星期”

异步多线程定时任务

@Scheduled 在计划任务数量太多的时候,可能出现阻塞,崩溃,延迟启动等问题

为了解决这个问题,我们可以采用异步多线程的方式,利用多个线程来管理定时任务,不让任务丢失

  • Application启动类中加入开启异步操作的注解 @EnableAsync
  • 在要异步开启定时任务的方法上加入异步注解 @Async

这样就不会一个任务没有执行完毕,而阻塞另一个任务的执行

  • @EnableAsync 启用Spring的异步方法执行功能
  • @Async 将方法标记为异步执行候选方法的注释。也可以在类型级别使用,在这种情况下,所有类型的方法都被认为是异步的。但是请注意,@Configuration类中声明的方法不支持 @Async 。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • springBoot使用mybatis-plus插件实现分页过程

    springBoot使用mybatis-plus插件实现分页过程

    本文介绍了MyBatisPlus的集成步骤,包括项目结构调整、pom.xml依赖添加、MyBatisPlusConfig配置文件创建与配置、具体代码实现(controller、service、dao、xml)、SQL结果打印、自定义分页等环节,此经验总结供读者参考学习
    2026-04-04
  • Java并发编程之原子变量与非阻塞同步机制

    Java并发编程之原子变量与非阻塞同步机制

    这篇文章主要介绍了Java并发编程之原子变量与非阻塞同步机制,本文讲解了非阻塞算法、悲观技术、乐观技术、CAS操作、原子变量、性能比较:锁与原子变量等内容,需要的朋友可以参考下
    2015-04-04
  • SpringBoot ApplicationContext接口深入分析

    SpringBoot ApplicationContext接口深入分析

    ApplicationContext是Spring应用程序中的中央接口,由于继承了多个组件,使得ApplicationContext拥有了许多Spring的核心功能,如获取bean组件,注册监听事件,加载资源文件等
    2022-11-11
  • 聊一聊concurrenthashmap的size方法原理

    聊一聊concurrenthashmap的size方法原理

    这篇文章主要介绍了concurrenthashmap的size方法原理,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Java实现局域网IP地址扫描

    Java实现局域网IP地址扫描

    这篇文章主要为大家详细介绍了Java实现局域网IP地址扫描,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • Java读取DBF文件(GBK编码)的方法

    Java读取DBF文件(GBK编码)的方法

    在Java开发中,有时需要读取DBF(dBase文件)格式的数据文件,而这些文件通常采用GBK(简体中文)编码,本文将介绍如何使用Java读取采用GBK编码的DBF文件,需要的朋友可以参考下
    2024-11-11
  • Java聊天室之实现获取Socket功能

    Java聊天室之实现获取Socket功能

    这篇文章主要为大家详细介绍了Java简易聊天室之实现获取远程服务器和客户机的IP地址和端口号功能,文中的示例代码讲解详细,需要的可以了解一下
    2022-10-10
  • 详解Java注解教程及自定义注解

    详解Java注解教程及自定义注解

    这篇文章主要为大家详细介绍了Java注解教程及自定义注解,帮助大家更好地学习Java注解,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • Java实现并查集示例详解

    Java实现并查集示例详解

    这篇文章主要通过一个题目示例为大家详细介绍Java如何实现并查集,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • mybatis plus saveOrUpdate实现有重复数据就更新,否则新增方式

    mybatis plus saveOrUpdate实现有重复数据就更新,否则新增方式

    这篇文章主要介绍了mybatis plus saveOrUpdate实现有重复数据就更新,否则新增方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12

最新评论