如此简单Quartz教程,你学会了嘛?

什么是Quartz?

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz是一个完全由java编写的开源作业调度框架。不要让作业调度这个术语吓着你。尽管Quartz框架整合了许多额外功能, 但就其简易形式看,你会发现它易用得简直让人受不了!。

方法一:调用execute()方法

首先在pom文件中导入quartz的包

	<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.3.0</version>
</dependency>

实现org.quartz.Job接口,且在execute()方法中写业务逻辑!


public class HelloQuartz implements Job{

	public void execute(JobExecutionContext arg0) throws JobExecutionException {
		// TODO Auto-generated method stub
		//打印当前的执行时间 例如 2017-11-23 00:00:00
        Date date = new Date();
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("现在的时间是:"+ sf.format(date));
        //具体的业务逻辑
        if(sf.format(date).equals("2019-05-14 10:29:00")) {
        	System.out.println("当前时间进行中");
        }

    
	}
	

调用withIntervalInSeconds()方法,告诉quartz多少秒执行一次

 SimpleTrigger trigger =TriggerBuilder.newTrigger().withIdentity("myTrigger").startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(1).repeatForever())
.build();//withIntervalInSeconds(1)每秒执行一次

 如果不调用withIntervalInSeconds()方法,也可以使用cron表达式的方式去执行。http://cron.qqe2.com/ 会帮你生成你想要的执行时间。

	public static void main(String[] args) throws SchedulerException {
	      //创建一个jobDetail的实例,将该实例与HelloQuartz Class绑定
        JobDetail jobDetail = JobBuilder.newJob(HelloQuartz.class).withIdentity("myJob").build();
        //创建一个Trigger触发器的实例,定义该job立即执行,并且每2秒执行一次,一直执行
        CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity("cronTrigger")
.withSchedule(CronScheduleBuilder.cronSchedule("0/2 * * * * ? ")).build();//通过表达式的形式来设置执行时间
        //创建schedule实例
        StdSchedulerFactory factory = new StdSchedulerFactory();
        Scheduler scheduler = factory.getScheduler();
        scheduler.start();
        scheduler.scheduleJob(jobDetail,cronTrigger);
	}

效果展示

方法二:注解的方式 @EnableScheduling和@Scheduled

先在SpringbootApplication.java启动的时候加入@EnableScheduling来开启任务注解

@SpringBootApplication
@EnableScheduling
public class SpringbootApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringbootApplication.class, args);
	}

}

在对应的方法上加入调度的注解即可@Scheduled(cron="0/1 * * * * ?")每秒钟执行一次

	@Scheduled(cron="0/1 * * * * ?")
	@Override
	public void quartz() {
		System.out.println("执行中");
	}

效果展示 

 

猜你喜欢

转载自blog.csdn.net/qq_39940674/article/details/90201131