`

springboot 定时调度

 
阅读更多

定时调度常用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

分享到:
评论

相关推荐

    springboot定时任务的动态开启关闭

    首先,在配置类上添加`@EnableScheduling`注解来启用定时任务的调度: ```java @Configuration @EnableScheduling public class TaskConfig { // ... } ``` 接下来,我们创建一个服务类,通过`Task...

    maven工程-基于springboot定时任务

    【正文】 在现代Java开发中,Spring Boot框架已经成为构建高效、简洁的应用程序的首选工具,尤其在...在hello-springboot项目中,你可以尝试按照上述步骤创建并运行一个简单的定时任务,进一步理解和掌握这一功能。

    springboot 定时任务(线程配置,并行【同步】、异步等)

    通过添加`@EnableScheduling`注解到某个配置类,我们可以启用Spring的定时任务调度器。这个注解会启动一个后台任务调度器,自动检测带有`@Scheduled`注解的方法并按需执行。 ```java @Configuration @...

    springboot 定时发送邮件

    首先,我们关注的是"定时"这一概念,这涉及到Spring Boot中的定时任务调度器——`@Scheduled`。通过在方法上添加此注解,我们可以将该方法设定为定时任务,例如每秒执行一次。`@Scheduled`注解可以与`@...

    SpringBoot集成任务调度,实现每天定时发送天气预报

    SpringBoot通过集成SpringFramework中的@Scheduled注解来实现任务的定时调度。@Scheduled注解支持cron表达式,这允许开发者以非常灵活的方式定义任务执行的具体时间点和频率。 #### cron表达式 cron表达式由六或七...

    springboot 定时任务加layui的界面版

    【SpringBoot定时任务与Layui界面集成详解】 在现代Web开发中,SpringBoot因其简洁、高效的特性,已经成为Java开发者构建后端服务的首选框架。而定时任务是系统功能的重要组成部分,它允许开发者安排任务在特定时间...

    基于 SpringBoot 的调度框架

    以下是对这个“基于SpringBoot的调度框架”的详细解析。 首先,Spring Boot集成Quartz或Spring Task是实现调度功能的常见方式。Quartz是一个功能丰富的开源作业调度库,而Spring Task则是Spring框架自带的任务调度...

    详解SpringBoot 创建定时任务(配合数据库动态执行)

    总结来说,SpringBoot中创建定时任务既可以采用简单的注解方式,快速实现静态的周期性任务,也可以通过接口和数据库的结合,实现更加灵活的动态任务调度。结合Mybatis和MySQL,可以在不重启应用的情况下调整定时任务...

    k8s+springboot+cronjob 定时任务配置

    然而,仅仅在本地或者单机环境中配置定时任务是不够的,当应用部署到 Kubernetes 集群时,我们需要更强大的调度工具。这就是 Kubernetes CronJob 的作用。CronJob 是 Kubernetes 提供的一种控制器,用于在指定的时间...

    SpringBoot整合Quartz任务定时调度

    本篇文章将详细探讨如何在Spring Boot项目中整合Quartz实现任务定时调度。 首先,我们需要理解Spring Boot与Quartz的整合基础。Spring Boot简化了Quartz的集成过程,我们可以通过添加相应的依赖来引入Quartz。在`...

    Springboot实现调度任务动态管理

    而`TaskScheduler`接口则提供了更高级的调度功能,如异步调度、定时任务的暂停与恢复等。 1. **使用@Scheduled实现简单调度** - `@Scheduled(fixedRate = 5000)`:设置固定的间隔时间,单位为毫秒,每隔5秒执行一...

    springboot动态配置定时任务(schedule)

    为了实现动态配置,我们可以使用`@ConfigurationProperties`注解解析配置文件中的定时任务参数,然后通过`@EnableScheduling`开启定时任务调度器: ```java import org.springframework.boot.context.properties....

    Springboot中使用数据库配置定时任务

    Spring Task是Spring框架的一部分,它提供了丰富的定时和调度功能,使得在Java应用中执行周期性任务变得非常简单。下面我们将深入探讨如何在Spring Boot项目中设置这一功能。 首先,我们需要在`application....

    SpringBoot项目,定时扫表功能,带部分处理逻辑

    接着,在SpringBoot的配置类或者任何你想定义定时任务的类上添加`@EnableScheduling`注解,开启定时任务调度器: ```java import org.springframework.scheduling.annotation.EnableScheduling; import org.spring...

    SpringBoot 整合Quartz(集群)实现定时任务调度

    SpringBoot整合Quartz实现定时任务调度是企业级应用中常见的需求,主要用于自动化执行某些周期性的任务,例如数据备份、报表生成、系统维护等。Quartz是一个功能强大的开源作业调度框架,能够灵活地定义任务和调度...

    springboot 定时任务

    SpringBoot定时任务是Java开发中常见的一种需求,用于在特定的时间执行特定的业务逻辑。SpringBoot结合了Quartz框架,使得在Spring应用中配置和管理定时任务变得简单易行。Quartz是一个强大的、完全由Java编写的任务...

    Springboot 定时任务(task)

    它允许开发者方便地创建和管理定时任务,而无需依赖外部的调度库,如Quartz或Cron。本项目利用了Spring Task的异步执行特性,以防止任务执行过程中堵塞应用的主线程,确保系统性能和稳定性。 一、Spring Task基本...

    基于SpringBoot+Vue的轻量级定时任务管理系统.zip

    通过这个项目,开发者可以深入理解SpringBoot和Vue.js的集成,学习如何设计和实现一个完整的Web应用,并掌握定时任务的管理和调度。同时,这也是一个全面锻炼软件工程实践能力的好机会,包括代码组织、文档编写、...

    Springboot2-Quartz 后台可动态配置的定时任务

    本项目“Springboot2-Quartz 后台可动态配置的定时任务”是基于SpringBoot 2.x版本与Quartz Scheduler整合的一个示例,它展示了如何在后台管理系统中动态地创建、更新和删除定时任务,以及监控这些任务的状态,为...

    SpringBoot实现动态定时任务

    在Spring Boot框架中,动态定时任务的实现是一个重要的功能,尤其对于需要实时处理或调度的业务场景至关重要。本文将深入探讨如何使用Spring Boot来构建一个能够动态管理的任务调度系统,包括暂停、恢复、添加和删除...

Global site tag (gtag.js) - Google Analytics