前言:非集成SpringBoot使用,本次主要学习基本使用、了解Quartz组件的作用及使用
一、引入依赖
<!--引入quartz依赖-->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.1</version>
</dependency>
二、创建一个任务类
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Job类
*/
public class HelloJob implements Job {//实现JOb接口
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
//业务写在execute方法里
//输出当前时间和线程名
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("hello========="+sdf.format(new Date())+"=="+Thread.currentThread().getName());
}
}
三、配置调度器并开始时间任务
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;
import static org.quartz.JobBuilder.newJob; //注意导入静态导入!!!
import static org.quartz.TriggerBuilder.*;
import static org.quartz.SimpleScheduleBuilder.*;
public class QuartzTest {
public static void main(String[] args) {//5、运行主方法
try {
//1、得到调度器 从标准调度器工场
Scheduler scheduler= StdSchedulerFactory.getDefaultScheduler();
scheduler.start();
//2、创建job对象
JobDetail Job=newJob(HelloJob.class)
.withIdentity("job1","group1")//设置job对象名称和组名
.build();
//3、创建触发器
Trigger trigger =newTrigger()
.withIdentity("trigger","group1")//设置触发器名称和组名
.startNow()//立即启动
.withSchedule(simpleSchedule().withIntervalInSeconds(5).repeatForever())//设置时间执行条件:此处为每五秒一次
.build();
//4、调度器调度 触发器对象和Job对象调度任务
scheduler.scheduleJob(Job,trigger);
TimeUnit.SECONDS.sleep(20);//线程休眠20秒、延时20秒后关闭调度器、否则只会运行一次输出
//5、调度完后关闭调度器
scheduler.shutdown();
} catch (Exception e) {
e.printStackTrace();
}
}
}
四、运行结果
五、时间任务组件关系图
六、贴个日志的XML配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="false" scanPeriod="10 seconds">
<!--控制Quartz输出的日志-->
<!-- 时间滚动输出 level为 WARN 日志 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<root level="WARN">
<appender-ref ref="console" />
</root>
</configuration>