当前位置: 首页 > news >正文

免费网站推荐货源深圳高端家政服务公司

免费网站推荐货源,深圳高端家政服务公司,seo推广效果怎么样,南京 做网站前言 在Spring Boot中,定时任务通过简单的注解即可实现周期性任务的自动执行。常用于数据统计、定时清理、通知推送等场景。 实现流程 1.启用定时任务 在主类或配置类添加 EnableScheduling 注解 SpringBootApplication EnableScheduling // 开启定时任务支持 p…

前言

  • 在Spring Boot中,定时任务通过简单的注解即可实现周期性任务的自动执行
  • 常用于数据统计、定时清理、通知推送等场景。

实现流程

1.启用定时任务
  • 在主类或配置类添加 @EnableScheduling 注解
@SpringBootApplication
@EnableScheduling // 开启定时任务支持
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}
2.定义定时任务类
@Component
public class SimpleScheduledTask {// 每5秒执行一次(固定速率,从任务开始时间算间隔)@Scheduled(fixedRate = 5000)public void task1() {System.out.println("Fixed Rate Task: " + LocalDateTime.now());}// 每3秒执行一次(固定延迟,从任务结束时间算间隔)@Scheduled(fixedDelay = 3000)public void task2() {System.out.println("Fixed Delay Task: " + LocalDateTime.now());}// 每天10:00执行(Cron表达式)@Scheduled(cron = "0 0 10 * * ?")public void task3() {System.out.println("Cron Task: " + LocalDateTime.now());}
}
  • 关键参数说明
    在这里插入图片描述
  • Cron表达式格式【可通过相关网站设置并生成】
秒(0-59) 分(0-59) 时(0-23) 日(1-31) 月(1-12) 周(0-7,0和7均为周日)

注意事项

  • 需要在启动类上添加注解支持@EnableScheduling,负责定时任务失效。
    在这里插入图片描述

效果【观察输出日志】

在这里插入图片描述

拓展【其他实现方式】

1.动态任务配置(基于接口 SchedulingConfigurer)

  • A.适用场景:
    • 需要从数据库或配置文件动态加载任务配置
    • 支持运行时动态增删改任务
  • B.实现步骤
  • (1)创建动态任务配置类:
@Configuration
@EnableScheduling
public class DynamicScheduledConfig implements SchedulingConfigurer {@Autowiredprivate TaskConfigRepository taskConfigRepository; // 假设从数据库读取任务配置@Overridepublic void configureTasks(ScheduledTaskRegistrar taskRegistrar) {// 动态加载任务配置List<TaskConfig> tasks = taskConfigRepository.findAllEnabledTasks();tasks.forEach(task -> {Runnable runnable = () -> executeTask(task);Trigger trigger = context -> {String cron = task.getCronExpression();return new CronTrigger(cron).nextExecutionTime(context);};taskRegistrar.addTriggerTask(runnable, trigger);});}private void executeTask(TaskConfig task) {System.out.println("执行动态任务: " + task.getName() + ", 时间: " + LocalDateTime.now());}
}
  • (2)数据库实体示例:
@Entity
public class TaskConfig {@Idprivate String id;private String name;private String cronExpression;private boolean enabled;// Getters and Setters
}

2.多线程定时任务

  • 解决单线程阻塞问题:默认情况下,@Scheduled 任务在单线程中串行执行。若需并行执行:
  • 配置线程池
@Configuration
public class AsyncScheduledConfig {@Beanpublic TaskScheduler taskScheduler() {ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();scheduler.setPoolSize(5); // 线程池大小scheduler.setThreadNamePrefix("scheduled-task-");scheduler.setAwaitTerminationSeconds(60);scheduler.setWaitForTasksToCompleteOnShutdown(true);return scheduler;}
}
  • 异步任务实例
@Component
public class AsyncScheduledTask {// 异步 + 定时任务@Async("taskExecutor") // 指定自定义线程池@Scheduled(fixedRate = 5000)public void asyncTask() {System.out.println("异步任务线程: " + Thread.currentThread().getName());}
}

总结

在这里插入图片描述

  • 实际开发中,推荐优先使用 @Scheduled 注解快速实现简单任务,复杂场景结合动态配置和线程池优化。
  • 生产环境务必添加任务监控和分布式锁机制。
http://www.dtcms.com/a/598033.html

相关文章:

  • MATLAB语言简介
  • 西安个人做网站不记得域名管理网站
  • 常州网站制作企业单位网站建设维护情况报告
  • Java反射完全指南:从入门到精通
  • seo网站推广报价企业系统包括哪些系统
  • 冬日暖居:科学应对暖气病的生活哲学
  • 网站建设的7个基本流程网站下面版权代码
  • 从文字到世界:空间智能是人工智能的下一个前沿
  • 51单片机逆向
  • 网站域名的管理密码如何索取wordpress禁止加载头部
  • Dubbo-学习笔记1
  • 怎样建设个自己的网站首页中信建设有限责任公司电话打不通
  • 无人机信息采集模块技术要点与难点
  • DDR4 4.27 Self refresh Operation
  • 建设工程业绩查询网站专业制作网站有哪些
  • 新闻类网站开发难点wordpress 注册填密码
  • 金耀网站建设秦皇岛建设局长
  • 捕鱼网站开发自学ui设计学什么软件
  • 网站的建设方法有哪些番禺区网站建设公司
  • 响应式编程 | 如何通过响应式编程提升前端开发效率
  • 网站建设北京海淀seo顾问服
  • 网站空间150m游戏推广话术
  • 高端大气的科技网站网站建设专业的公司
  • 蒙文网站建设情况汇报怎么看网站是服务器还是虚拟主机
  • 淘宝网站建设教程视频温岭网站建设制作
  • CANN中MmDeqSwigluQuantMmDeq算子模型的深层解析
  • 03.Python语言中的变量
  • 攻防世界-Misc-can_has_stdio?
  • 新余网站开发公司巩义网站建设方案表
  • 东莞网络网站建设为什么运行wordpress