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

免费网站推荐货源中国欧洲陆运专线

免费网站推荐货源,中国欧洲陆运专线,恩施网站定制,百度文库 旅游网站建设方案书前言 在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/595690.html

相关文章:

  • 个人单页网站建设北京海淀财政局网站
  • 公司网站建设情况说明微信制作企业网站
  • 我公司想做网站福建微网站建设公司推荐
  • 好用的网站系统东莞网络安全建设
  • 网站建设图片手机黑龙江企业信息系统
  • 网站建设的制度网站托管好吗
  • 文字网站和图片网站哪个难做新媒体营销和传统营销的区别
  • 贺州市住房和城乡建设局网站设计网站公司长沙
  • 使用免费网站制作软件学生个人网站制作软件
  • 该去哪里购买网站域名和空间东莞营销网站
  • 做百度手机网站点上海注册公司流程及资料
  • 济南智能网站建设电话wordpress百度云
  • 用什么软件可以做网站动态投资类wordpress主题
  • 网站建设对客户的优势wordpress 评论 不好
  • 简易网页设计代码网站打开速度慢 如何优化
  • 用网站源码做网站江干区住房和城市建设局网站
  • 网站规划与建设重要性理解与体会南昌做网站开发的公司有哪些
  • 怎么关注网站 在手机上广州门户网站
  • 亚马逊做超链接的网站中国风手机网站模板
  • 网站结构怎么分析做惠而浦售后网站赚钱
  • diy建站系统深圳十大平面设计公司排名
  • h5网站建设哪家好搜狐做app的网站
  • 软件开发资源网站镇江网络广播电视
  • 网站优化公司免费咨询做网站在哪接广告
  • php网站 关键技术网络推广优化的英文
  • 底湘西网站建设网站么做淘宝客赚佣金
  • 淘宝做详情页的网站网站建设的步骤及方法
  • 搭建网站工具惠州seo外包费用
  • 成都手机建站中企动力有限公司官网
  • 国家示范校建设成果网站域名地址查询