定时器常见的几种方式 :
-
JDK自带的java.util.Timer类 ,但是只能按照某一个频率执行,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少。也就学Java初期会这么自己玩下,企业中一般不使用
-
Quertz 一个功能比较强大的调度器,让程序在指定的时间执行(例如:每天12点更新某些数据),也可以按照你指定的频率执行(几秒/几分钟执行一次),但是配置起来比较复杂
-
Spring3.0 以后自带的定时器task,可以将它看着一个轻量级的Quartz,而且使用起来比Quartz简单许多.我们可以使用的就是该方式进行定时任务的调度
我个人也比较喜欢这种方式,相比Quertz便捷很多
先从pom.xml文件看起 :
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.wangjiulong</groupId>
<artifactId>spring-boot-task</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.9.RELEASE</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!-- web支持:1.webMvc 2.restFul 3.jackJson 4.aop... -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
因为是springboot内置提供的,所以只需要导入springboot的包就可以了
在你的启动类上写上注解@EnableScheduling,目的是为了告诉人家你有一个定时任务

然后编写一个定时器类,在类上加上注解:
@EnableScheduling
作用 : 登记所有使用@Scheduled注解的bean方法到一个ScheduledTaskRegistrar,供调度任务执行器TaskScheduler执行。
@Slf4j
作用 : slf4j只是一个日志标准,并不是日志系统的具体实现。理解这句话非常重要,slf4j只做两件事情:
提供日志接口
提供获取具体日志对象的方法
@Component
作用 : 把这个类交给Spring管理
在需要定时的方法上加上注解
@Scheduled
作用 : 指定定时器什么时候执行
import java.util.Date;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
/**
* 定时任务类
* @author pactera
*
*/
@EnableScheduling
@Slf4j
@Component
public class MyTask {
//需要执行的任务 每十秒钟执行一次
//@Scheduled 定义定时任务的信息
// 属性 cron表达式:定义执行的时间
@Scheduled(cron="0/10 * * * * ?")
public void tesk1(){
System.out.println("tesk1.....["+new Date()+"]");
}
}
cron表达式的获取 : https://cron.qqe2.com/

在这里选取数值后将表达式复制到表达式里,将服务启动后即可进行定时

1963



被折叠的 条评论
为什么被折叠?



