首页 > 其他分享 >注解@Scheduled笔记

注解@Scheduled笔记

时间:2023-06-01 21:56:01浏览次数:44  
标签:Scheduled Spring 笔记 任务 线程 注解 执行

简介

@Scheduled是Spring框架中一个用于指定定时任务的注解,它可以标注在方法上,表示这个方法是一个定时任务,会按照指定的时间间隔执行。  

常见的定时任务时间间隔包括:

  1. @Scheduled(fixedDelay = xxx):表示间隔多少毫秒执行一次任务;
  2. @Scheduled(fixedRate = xxx):表示每多少毫秒执行一次任务;
  3. @Scheduled(cron = "xxx"):基于cron表达式指定定时任务执行时间。

在Spring Boot中,所有通过@Scheduled注解定义的定时任务都会被放入一个公用的线程池中执行,默认情况下,该线程池的并发线程数为1,即所有的任务会使用同一个线程被依次执行。

具体来说,当一个定时任务到达其触发时间时,Spring Boot将会从线程池中获取一个线程来执行该任务。如果同一时间有多个任务同时触发,那么这些任务将会按照任务定义的顺序依次排队,等待线程池中的线程被释放后依次执行。

我们可以通过在application.propertiesapplication.yml文件中设置spring.task.scheduling.pool.size属性来配置线程池中的线程数。例如,可以设置该参数的值为2,默认为1,以便在执行任务时使用多个线程,提高任务并行度和执行效率。

需要注意的是,在多个任务共享同一个线程池的情况下,如果其中一个任务出现长时间阻塞或者执行时间过长的情况,可能会影响下一个任务的执行时间或者与后续任务的并行执行。因此,建议在编写任务代码时,尽量保证任务能够在较短的时间内执行完毕,并且不会出现阻塞的情况。如果任务代码中有可能出现阻塞或者长时间执行的操作,可以将这些操作放到异步线程中执行,避免对主线程造成阻塞影响其他任务的执行。

注意:

在 Spring 中,如果一个类中使用了 @EnableScheduling 注解开启了定时任务的支持,
那么这个类中定义的所有带有 @Scheduled 注解的方法都会被自动注册为任务,并按照给定的执行规则周期性地执行。
当其他类中也定义了带有 @Scheduled 注解的方法时,虽然这些方法不在 @EnableScheduling 注解所在的类中,
但它们同样被自动注册为任务,并可以按照指定的规则执行。
这是因为 Spring 会自动扫描整个应用程序的类,并自动注册所有具有 @Scheduled 注解的方法。
因此,当您在一个类中使用 @EnableScheduling 注解时,即使其他类中也定义了带有 @Scheduled 注解的方法,只要它们被成功注册到 Spring 容器中,它们也可以被执行。
【一般我们只在启动类上使用@EnableScheduling注解】

 

标签:Scheduled,Spring,笔记,任务,线程,注解,执行
From: https://www.cnblogs.com/danielzzz/p/17450288.html

相关文章

  • Mysql训练营笔记
    Mysql架构与内部模块演示环境:MySQL5.7存储引擎:InnoDB一、一条查询SQL是如何执行的?  程序或者工具要操作数据库,第一步跟数据库建立连接。1、通信协议首先,MySQL必须要运行一个服务,监听默认的端口(3306)。通信协议MySQL支持多种通信协议。第一个就是TCP/IP协议,编......
  • 【学习笔记】博弈论 ---- 非偏博弈
    博弈论入门前言:本篇按照Qingyu在省集讲的加入我这个萌新的萌新理解而成。听了Qingyu的博弈论讲解,感觉我之前学过的博弈就是冰山一角。由于有一些东西没听懂,就主要写写我听懂的部分,没懂得以后再说吧。所以这篇只是一个入门,关于博弈的一些习题可能会咕咕咕。平等博弈(非偏......
  • springBoot service 事务注解@Transactional不起作用的解决
    在springBoot使用事物时,发现事务并没有正常执行,没有进行回滚@Transactionalpublicvoidadd(StringcompanyName,Stringname)throwsMyException{ companyDao.add(companyName);try{ userDao.addUser(name);}catch(DuplicateKeyExceptione){//......
  • 大唐杯笔记
    微基站和有源天线单元有什么区别微基站和有源天线单元(AAU)是5G网络中的两种不同的基站设备。微基站是一种小型化、轻量级的基站,通常采用集成式设计,将射频单元、基带单元、功放等模块集成在一个小型机箱内,具有灵活性强、部署简便等特点。微基站通常使用光纤或者铜缆......
  • Linux进程管理、计划任务笔记
    一、Linux进程管理1.1、进程概念进程是正在运行的程序实体,并且包括这个运行的程序中占据的所有系统资源,比如说CPU(寄存器),IO,内存,网络资源等。并发程序和顺序程序有本质上的差别,为了能更好地描述程序的并发执行,实现操作系统的并发性和共享性,引入“进程”的概念。进程是具有一定独立......
  • Python笔记:正则表达式方法
    正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不......
  • 考古笔记10:网络地址转换NAT(1)-基础
    NAT的概念相关1、概念   NAT:网络地址转换实现将内网私有IP地址转换为公网IP地址 解决公网IP地址数目不足的问题 可保护内网IP地址的私密性,起到一定的安全性 还可实现企业内多个私有IP网段重叠问题2、NAT分类静态NAT:唯一的私有IP------映射------唯一的公网IP(映射关系确......
  • java 批量数据插入数据库时,加上@Transactional注解后太慢,导致卡死
    这里推荐一个可行的处理方式:新建一张temp表,读取文件先插入temp表,不加注解进行事务处理,这样报错也不会导致正式表的数据被更新掉;数据到插入进temp表后,将temp表数据插入正式表,加上注解,这样可以满足插入大量数据的要求 有更好的方式欢迎评论分享......
  • z函数|exkmp|拓展kmp 笔记+图解
    题外话,我找个什么时间把kmp也加一下图解z函数|exkmp别担心这个exkmp和kmp没毛点关系,请放心食用。本文下标以1开始,为什么?因为1开始就不需要进行长度和下标的转换,长度即下标。定义给出模板串S和子串T,长度分别为n和m,对于每个ans[i](1<=i<=n),求出S[i...n]与T的最长公共前缀长......
  • SQL 语法笔记
    ➪SQL  ➪基本类型char/varchar/int/smallint/numeric/real,doubleprecision/float  ➪数据定义createtabledepartment//定义SQL关系 (dept_namevarchar(20),//属性名域buildingvarchar(15),budgetnumeric(12,2),primarykey(dept_name));//......