简介

@Scheduled 定时任务自定义可以通过SchedulingConfigurer实现。

SchedulingConfigurerSpring Framework 中的一个接口,用于配置定时任务。当你需要对定时任务进行更高级别的定制时,这个接口就显得非常有用。

  • 可以通过SchedulingConfigurer 接口来自定义一些高级配置
  • 可以通过SchedulingConfigurer 自定义执行定时任务的线程池。
  • 可以通过SchedulingConfigurer自定义任务调度器,比如使用 Quartz 或其他调度框架。

实现

创建一个类实现SchedulingConfigurer

@Configuration
public class ScheduleConfig implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
scheduler.setPoolSize(10);
scheduler.setThreadNamePrefix("schedule-executor-");
scheduler.initialize();
taskRegistrar.setScheduler(scheduler);
}
}

可以通过 ThreadPoolTaskScheduler 或者 ScheduledExecutorService 来配置线程池

使用

  • 1.启动类添加 @EnableScheduling 注解
  • 2.使用 @Scheduled 注解
    @Scheduled(cron = "0/30 * * * * ?")
public void test(){
log.info("Scheduled Test -- The time is now " + LocalDateTime.now());
}

效果

2024-08-15 20:07:00,014 INFO [schedule-executor-2] com.zk.app.manager.PartitionManager - Scheduled Test -- The time is now 2024-08-15T20:07:00.014
2024-08-15 20:07:30,004 INFO [schedule-executor-3] com.zk.app.manager.PartitionManager - Scheduled Test -- The time is now 2024-08-15T20:07:30.004
2024-08-15 20:08:00,010 INFO [schedule-executor-2] com.zk.app.manager.PartitionManager - Scheduled Test -- The time is now 2024-08-15T20:08:00.010
2024-08-15 20:08:30,014 INFO [schedule-executor-1] com.zk.app.manager.PartitionManager - Scheduled Test -- The time is now 2024-08-15T20:08:30.013
2024-08-15 20:09:00,016 INFO [schedule-executor-5] com.zk.app.manager.PartitionManager - Scheduled Test -- The time is now 2024-08-15T20:09:00.016

总结

  • SchedulingConfigurer 提供了一个灵活的方式来定制定时任务的执行方式。
  • 可以配置线程池的大小、执行策略等。
  • 通过实现该接口并提供给 Spring,你可以完全控制定时任务的执行环境。
  • 能够根据自己的需求来配置定时任务,确保它们按照预期的方式运行。

结束

@Scheduled 定时任务自定义的更多相关文章

  1. SpringBoot学习18:springboot使用Scheduled 定时任务器

    Scheduled 定时任务器:是 Spring3.0 以后自带的一个定时任务器. 1.在pom.xml文件中添加Scheduled依赖 <!-- 添加spring定时任务 Scheduled ...

  2. scheduled定时任务+实例请求数据库

    1.scheduled定时任务类:ScheduledDemo.java package com.nantian.scheduled; import java.util.Date; import org ...

  3. SpringBoot: 18.使用Scheduled 定时任务器(转)

    Scheduled 定时任务器:是 Spring3.0 以后自带的一个定时任务器. 1.在pom.xml文件中添加Scheduled依赖 <!-- 添加spring定时任务 Scheduled ...

  4. Scheduled定时任务器在Springboot中的使用

    Scheduled定时任务器是Spring3.0以后自带的一个定时任务器. 使用方式: 1.添加依赖 <!-- 添加 Scheduled 坐标 --> <dependency> ...

  5. Spring Boot Scheduled定时任务特性

    SpringBoot中的Scheduled定时任务是Spring Boot中非常常用的特性,用来执行一些比如日切或者日终对账这种定时任务 下面说说使用时要注意的Scheduled的几个特性 Sched ...

  6. 你不知道的Scheduled定时任务骚操作

    目录 一.什么是定时任务 二.项目依赖 三.注解式定时任务 3.1 cron 3.2 fixedDelay 3.3 fixedDelayString 3.4 fixedRate 3.5 fixedRa ...

  7. spring boot注解之@Scheduled定时任务实现

    java实现定时任务一般使用timer,或者使用quartz组件.现在在spring boot提供了更加方便的实现方式. spring boot已经集成了定时任务.使用@Secheduled注解. @ ...

  8. Spring注解@Scheduled定时任务

    一.首先配置applicationContext-task.xml (1)添加 xmlns:task="http://www.springframework.org/schema/task& ...

  9. spring的@Scheduled定时任务,同一时间段的定时任务只会执行一个,其余的会被阻塞,@Scheduled注解定时任务并发执行解决办法,即多线程运行定时任务

    原文:https://blog.csdn.net/qq_35937303/article/details/88851064 现有两个定时任务 @Component("aa") pu ...

  10. Java SpringBoot Scheduled定时任务

    package task.demo.controller; import org.springframework.beans.factory.annotation.Autowired; import ...

随机推荐

  1. 从v-for的key说起

    一.v-for中的key是为什么存在呢? 这是vue官网给key的定义,key主要用于vue的虚拟dom算法.新的问题出现了,vue的虚拟dom算法是什么? 二.虚拟domg算法 我们的程序在运行时, ...

  2. linux:MariaDB安装

    介绍 链接 安装 查看系统中是否已安装 rpm -qa | grep -i mariadb 返回结果类似如下内容,则表示已有 MariaDB 的包 为避免安装版本不同造成冲突,请执行以下命令移除已安装 ...

  3. Nukem pg walkthrough Intermediate

    nmap 扫描 ┌──(root㉿kali)-[~] └─# nmap -p- -A 192.168.157.105 Starting Nmap 7.94SVN ( https://nmap.org ...

  4. python ModuleNotFoundError_ No module named 'xxx'的解决方案

    本文主要针对的自己写的包无法正常import的情况,如果是第三方包的话正常来说没有问题. 第三方包 主要考虑没有安装对应的版本以及包名写错了等奇葩情况,具体可参考ModuleNotFoundError ...

  5. 解决yarn打包时出现“FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory”的问题

    1.问题描述 我们在使用yarn命令对项目进行打包时,可能会出现如下的错误信息 "FATAL ERROR: Reached heap limit Allocation failed - Ja ...

  6. 普通人也能轻松掌握的20个DeepSeek高频提示词(2025版)

    一.基础原则 1️⃣ 说人话最重要 "不用专业术语,就像和朋友聊天一样描述需求". ️ 错误示范:"请用SWOT分析法输出新能源汽车行业报告". 正确示范:&q ...

  7. KVM快照管理

    [root@kvm1 ~]# virsh virsh # list --all Id Name State ---------------------------------------------- ...

  8. .NET 8.0 + Linux 香橙派,实现高效的 IoT 数据采集与控制解决方案

    前言 随着物联网(IoT)技术的迅猛发展,智能设备之间的互联互通变得越来越重要. 推荐一套基于 C# 的高效 IoT 系统,该系统运行在 Linux 开发板上,并支持 Modbus RS485 传感器 ...

  9. C# 设计模式(一)

    转自:http://www.cnblogs.com/xun126/archive/2011/03/09/1970807.html C#设计模式学习笔记-单例模式 最近在学设计模式,学到创建型模式的时候 ...

  10. TortoiseGit 在windows11 中使用,建议升级到 2.13.0版本以后