Quartz任务调度简介--浅谈Trigger

Triiger的定义:
通用的属性:
Jobkey:表示Job实例,触发器被触发时,该指定的Job实例会被执行。
StartTime:表示触发器的时间表示首次被触发的时间,值的类型是Java.util.Date类。
EndTime:指定触发器不在被触发的时间,值的类型是Java.util.Date类。
下面的代码演示:
在当前时间三秒之后开始执行,在当前时间六秒之后执行结束,并且获取开始执行的时间和结束执行的时间:
创建一个HelloJob2类继承Job代买如下:

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.Trigger;

import java.text.SimpleDateFormat;
import java.util.Date;

public class HelloJob02 implements Job{
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        String simpleDateFormat =new SimpleDateFormat("yyyy-mm-dd HH:mm:ss").format(new Date());

        System.out.println("当前执行时间是:"+simpleDateFormat);
        //获取startTime 和EndTime
       System.out.println("结束执行时间:"+new SimpleDateFormat("yyyy-mm-dd HH:mm:ss").
               format(jobExecutionContext.getTrigger().getEndTime()));
       System.out.println("开始执行时间:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").
               format(jobExecutionContext.getTrigger().getStartTime()));
//获取当前Trigger 的Name 和Group 以及当前Trigger的类
       System.out.println("JobKey info-----"+"JobName:"+jobExecutionContext.getTrigger().getJobKey().getName()
               +" JobClass: "+jobExecutionContext.getTrigger().getJobKey().getClass()+"JobGroup:"+jobExecutionContext.getTrigger().getJobKey().getGroup());
    }

创建一个测试类:

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

import java.text.SimpleDateFormat;
import java.util.Date;

public class HelloScheduler02 {

    public static void main(String[] args) throws Exception{
        HelloScheduler02 helloScheduler02 = new HelloScheduler02();
        helloScheduler02.test01();

    }

    /**
     * 距离当前时间三秒之后开始执行 距离当前时间六秒之后停止执行
     * @throws Exception
     */
    public void test01()throws Exception{
        //获取当前时间的
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date  date1 =new Date();
        simpleDateFormat.format(date1);
        date1.setTime(date1.getTime()+3000);//获取距离当前时间3面之后的时间
        Date date2 = new Date();
        date2.setTime(date1.getTime()+3000);
        JobDetail jobDetail = JobBuilder.newJob(HelloJob02.class).withIdentity("myjob","goup1").build();
        //设置当前时间三秒开始执行 设置当前时间六秒结束执行。
        Trigger trigger = TriggerBuilder.newTrigger().withIdentity("mytrigger","group").startAt(date1).endAt(date2).
                withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).repeatForever()).build();
        Scheduler scheduler1 = new StdSchedulerFactory().getScheduler();
        scheduler1.start();
        scheduler1.scheduleJob(jobDetail,trigger);
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_37546725/article/details/81417278
今日推荐