SpringBoot 定时器简单使用,实现任务调度

/* 开启定时任务注解 */

@EnableScheduling

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)

public class abcApplication {

public static void main(String[] args) {

SpringApplication.run(abcApplication.class, args);

}

}

②新建一个Service,我这边只单纯为了举例,就不分什么impl了:

/**

  • @Author: JCccc

  • @CreateTime: 2018-09-21

  • @Description: 定时器任务测试

*/

@Service

public class TaskService {

//方法

}

③在刚才建的Service类里面,开始添加方法,并使用@Scheduled  (这个用于定时器调度) :

举几个例子 做介绍:

@Scheduled(cron = "0 */1 * * * * ")

public void reportCurrentByCron(){

System.out.println ("定时每分钟执行一次 : " + dateFormat().format (new Date ()));

}

@Scheduled(fixedDelayString=“5000”)

public void delayLoop(){

System.out.println(“延迟5秒运行一次 :”+ dateFormat().format (new Date ()));

}

@Scheduled(fixedRate=1000)

public void delayLoop(){

System.out.println(“每秒运行一次 :”+ dateFormat().format (new Date ()));

}

@Scheduled(fixedDelay=1000)

public void delayLoop(){

System.out.println(“每秒运行一次 :”+ dateFormat().format (new Date ()));

}

@Scheduled(fixedRate=1000,initialDelay=2000)

public void delayLoop(){

System.out.println(“运行后延迟2秒运行,再每隔一秒运行一次 :” + dateFormat().format(new Date()));

}

@Scheduled(cron = “0,1,2,3,4,5,6 * * * * MON-SAT”)//每分钟的前面0,1,2,3,4,5,6秒都执行一次

public void runTask(){

System.out.println(“定时每分钟的前6秒发送推报 :” + new Date());

}

以上例子,看打印里面的中文就知道什么作用了。那么,我接下来介绍一下下。

首先,如果你认真看上面的例子,你就会发现,fixedRate 和 fixedDelay 这两个东西好像都是隔多少秒循环执行。

介绍及区别说明:

FixedRate----- > @Scheduled(fixedRate=5000)

第一个任务开始时间秒数为00:00:30;那么在5秒之后,35秒的时候,第二个任务就会立刻执行的。 若第一个任务执行划分10秒,第二个任务的执行并不会受影响,还是会在00:00:35秒的时候执行。

FixedDelay---- > @Scheduled(fixedDelay=5000)

第一个任务开始时间秒数为00:00:30;那么第二个任务执行的时候,必须是第一个任务执行完再等5秒之后才能执行。 若第一个任务执行花费10秒,那么就说00:00:40+5秒,也就是00:00:45秒的时候,第二个任务才会执行。

划重点!!!以下内容:--------------------------------------------!!!!!!!!!!!!---------------------------------------

上面都是关于定时器怎么调用的, 那么怎么关闭呢。

简单暴力,我举个例:

思路一:

private static boolean isStop=true;//先搞个全局变量,默认是true

@Scheduled(cron = "0 */1 * * * * ")

public void reportCurrentByCron(){

if(isStop) {

System.out.println("定时每分钟执行一次 : " + dateFormat().format(new Date()) + " " + isStop);

}

}

### 如何在 Java Spring Boot 中创建和配置定时任务 #### 添加依赖项和支持 为了使定时任务生效,需确保项目已引入必要的依赖项。对于大多数Spring Boot项目,默认情况下已经包含了这些依赖项。如果未包含,则可以在`pom.xml`文件中添加相应的依赖。 #### 启用调度功能 要在Spring Boot应用程序中启用定时任务的支持,需要在一个配置类上标注`@EnableScheduling`注解[^1]。此操作一般放置于项目的主启动类之上: ```java import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @EnableScheduling public class SchedulerApplication { public static void main(String[] args) { SpringApplication.run(SchedulerApplication.class, args); } } ``` #### 编写定时任务逻辑 接下来定义具体的业务处理逻辑作为定时任务的一部分。通过创建一个新的组件并利用`@Scheduled`注解来指定执行频率和其他参数,可以很容易地完成这一目标[^2]。下面给出了一段简单的例子展示每五秒钟打印一条消息的任务实现方式: ```java import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component public class TaskScheduler { // 每隔5秒执行一次任务 @Scheduled(fixedRate = 5000) public void scheduledTask() { System.out.println("定时任务执行啦!"); } } ``` 上述代码片段展示了如何设置固定速率(`fixedRate`)下的重复调用;除此之外还有其他属性可用于更复杂的场景控制,比如基于cron表达式的计划安排或者相对时间间隔(`fixedDelay`)等模式。 #### 关键概念解释 所谓定时任务是指按照预定的时间表自动运行的一系列程序指令集合,在软件工程领域被广泛应用以满足诸如数据备份、报告生成等各种周期性的作业需求[^3]。而在Spring Boot环境下,借助内置的任务调度工具包能够极大地简化这类特性的集成过程。 #### 使用Task机制增强灵活性 除了基本的`@Scheduled`外,还可以考虑采用更加高级的方式——即通过编程接口的形式注册动态调整的任务实例。这种方式允许开发者根据实际应用场景的变化随时修改或新增特定条件触发的动作列表[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值