定时调度常用Timetask , QuartZ, Springtask。
Timetask由于时效性不好,很少作为企业级调度,而QuzrtZ开发太麻烦,所以使用Springtask进行配置。
新建一个定时调度的类,并使用注解方式进行调度
package cn.sona.microboot.task; import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component public class MyScheduler { @Scheduled(fixedRate = 2000) // 采用间隔调度,每2秒执行一次 public void runJobA() { // 定义一个要执行的任务 try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("【*** MyTaskA - 间隔调度 ***】" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS") .format(new Date())); } @Scheduled(cron = "* * * * * ?") // 每秒调用一次 public void runJobB() { System.err.println("【*** MyTaskB - 间隔调度 ***】" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS") .format(new Date())); } }
在程序启动的入口开启定时调度
package cn.sona.microboot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication // 启动SpringBoot程序,而后自带子包扫描 @EnableScheduling // 启用间隔调度 public class StartSpringBootMain { public static void main(String[] args) throws Exception { SpringApplication.run(StartSpringBootMain.class, args); } }
此时调度有问题,因为现在调度是串行的,如果第一个调度事件太长,会影响第二个调度;
使用线程调度池进行调度。
package cn.sona.microboot.config; import java.util.concurrent.Executors; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.SchedulingConfigurer; import org.springframework.scheduling.config.ScheduledTaskRegistrar; @Configuration // 定时调度的配置类一定要实现指定的父接口 public class SchedulerConfig implements SchedulingConfigurer { @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { // 开启一个线程调度池 taskRegistrar.setScheduler(Executors.newScheduledThreadPool(100)); } }
效果如图所示
【*** MyTaskB - 间隔调度 ***】2017-09-30 01:03:43.003
【*** MyTaskB - 间隔调度 ***】2017-09-30 01:03:44.001
【*** MyTaskB - 间隔调度 ***】2017-09-30 01:03:45.003
【*** MyTaskB - 间隔调度 ***】2017-09-30 01:03:46.001
【*** MyTaskB - 间隔调度 ***】2017-09-30 01:03:47.005
【*** MyTaskA - 间隔调度 ***】2017-09-30 01:03:47.740
github地址:https://github.com/sona0402/springboot-task.git
相关推荐
首先,在配置类上添加`@EnableScheduling`注解来启用定时任务的调度: ```java @Configuration @EnableScheduling public class TaskConfig { // ... } ``` 接下来,我们创建一个服务类,通过`Task...
【正文】 在现代Java开发中,Spring Boot框架已经成为构建高效、简洁的应用程序的首选工具,尤其在...在hello-springboot项目中,你可以尝试按照上述步骤创建并运行一个简单的定时任务,进一步理解和掌握这一功能。
通过添加`@EnableScheduling`注解到某个配置类,我们可以启用Spring的定时任务调度器。这个注解会启动一个后台任务调度器,自动检测带有`@Scheduled`注解的方法并按需执行。 ```java @Configuration @...
首先,我们关注的是"定时"这一概念,这涉及到Spring Boot中的定时任务调度器——`@Scheduled`。通过在方法上添加此注解,我们可以将该方法设定为定时任务,例如每秒执行一次。`@Scheduled`注解可以与`@...
SpringBoot通过集成SpringFramework中的@Scheduled注解来实现任务的定时调度。@Scheduled注解支持cron表达式,这允许开发者以非常灵活的方式定义任务执行的具体时间点和频率。 #### cron表达式 cron表达式由六或七...
【SpringBoot定时任务与Layui界面集成详解】 在现代Web开发中,SpringBoot因其简洁、高效的特性,已经成为Java开发者构建后端服务的首选框架。而定时任务是系统功能的重要组成部分,它允许开发者安排任务在特定时间...
以下是对这个“基于SpringBoot的调度框架”的详细解析。 首先,Spring Boot集成Quartz或Spring Task是实现调度功能的常见方式。Quartz是一个功能丰富的开源作业调度库,而Spring Task则是Spring框架自带的任务调度...
总结来说,SpringBoot中创建定时任务既可以采用简单的注解方式,快速实现静态的周期性任务,也可以通过接口和数据库的结合,实现更加灵活的动态任务调度。结合Mybatis和MySQL,可以在不重启应用的情况下调整定时任务...
然而,仅仅在本地或者单机环境中配置定时任务是不够的,当应用部署到 Kubernetes 集群时,我们需要更强大的调度工具。这就是 Kubernetes CronJob 的作用。CronJob 是 Kubernetes 提供的一种控制器,用于在指定的时间...
本篇文章将详细探讨如何在Spring Boot项目中整合Quartz实现任务定时调度。 首先,我们需要理解Spring Boot与Quartz的整合基础。Spring Boot简化了Quartz的集成过程,我们可以通过添加相应的依赖来引入Quartz。在`...
而`TaskScheduler`接口则提供了更高级的调度功能,如异步调度、定时任务的暂停与恢复等。 1. **使用@Scheduled实现简单调度** - `@Scheduled(fixedRate = 5000)`:设置固定的间隔时间,单位为毫秒,每隔5秒执行一...
为了实现动态配置,我们可以使用`@ConfigurationProperties`注解解析配置文件中的定时任务参数,然后通过`@EnableScheduling`开启定时任务调度器: ```java import org.springframework.boot.context.properties....
Spring Task是Spring框架的一部分,它提供了丰富的定时和调度功能,使得在Java应用中执行周期性任务变得非常简单。下面我们将深入探讨如何在Spring Boot项目中设置这一功能。 首先,我们需要在`application....
接着,在SpringBoot的配置类或者任何你想定义定时任务的类上添加`@EnableScheduling`注解,开启定时任务调度器: ```java import org.springframework.scheduling.annotation.EnableScheduling; import org.spring...
SpringBoot整合Quartz实现定时任务调度是企业级应用中常见的需求,主要用于自动化执行某些周期性的任务,例如数据备份、报表生成、系统维护等。Quartz是一个功能强大的开源作业调度框架,能够灵活地定义任务和调度...
SpringBoot定时任务是Java开发中常见的一种需求,用于在特定的时间执行特定的业务逻辑。SpringBoot结合了Quartz框架,使得在Spring应用中配置和管理定时任务变得简单易行。Quartz是一个强大的、完全由Java编写的任务...
它允许开发者方便地创建和管理定时任务,而无需依赖外部的调度库,如Quartz或Cron。本项目利用了Spring Task的异步执行特性,以防止任务执行过程中堵塞应用的主线程,确保系统性能和稳定性。 一、Spring Task基本...
通过这个项目,开发者可以深入理解SpringBoot和Vue.js的集成,学习如何设计和实现一个完整的Web应用,并掌握定时任务的管理和调度。同时,这也是一个全面锻炼软件工程实践能力的好机会,包括代码组织、文档编写、...
本项目“Springboot2-Quartz 后台可动态配置的定时任务”是基于SpringBoot 2.x版本与Quartz Scheduler整合的一个示例,它展示了如何在后台管理系统中动态地创建、更新和删除定时任务,以及监控这些任务的状态,为...
在Spring Boot框架中,动态定时任务的实现是一个重要的功能,尤其对于需要实时处理或调度的业务场景至关重要。本文将深入探讨如何使用Spring Boot来构建一个能够动态管理的任务调度系统,包括暂停、恢复、添加和删除...