• 浅谈Trigger


    什么是Trigger?

    Quartz中的触发器用来告诉调度程序作业什么时候触发。即Trigger对象是用来触发Job的 

    •  JobKey表示Job实例的标识,触发器被触发时,该指定的Job实例会执行。
    • StartTime 表示触发器的时间表首次被触发的时间。它的值的类型是Java.util.Date
    • EndTime 指定触发器的不再被触发的时间。它的值的类型是Java.util.Date

    具体案例

    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import org.quartz.JobBuilder;
    import org.quartz.JobDetail;
    import org.quartz.Scheduler;
    import org.quartz.SchedulerException;
    import org.quartz.SchedulerFactory;
    import org.quartz.SimpleScheduleBuilder;
    import org.quartz.Trigger;
    import org.quartz.TriggerBuilder;
    import org.quartz.impl.StdSchedulerFactory;
    
    public class HelloScheduler {
        
        public static void main(String[] args) throws SchedulerException {
            //打印当前的执行时间
            Date date = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String currentTime = sdf.format(date);
            System.out.println("Current Time : "+currentTime);
            //获取当前时间3秒后的时间
            date.setTime(date.getTime()+3000);
            //获取距离当前时间6秒后的时间
            Date endDate = new Date();
            endDate.setTime(endDate.getTime()+6000);
            //创建一个JobDetail实例,将该实例与HelloJob class绑定
            JobDetail jobDetail = JobBuilder.newJob(HelloJob.class)
                    .withIdentity("myJob", "group1")
                    .build();
            //创建一个Trigger实例,定义该Job立即执行,并且每隔2秒钟重复执行一次,直到永远
            Trigger trigger = TriggerBuilder.newTrigger()
                    .withIdentity("myTrigger", "group1")
                    .startAt(date)
                    .endAt(endDate)
                    .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).repeatForever())
                    .build();
            //创建Scheduler实例
            SchedulerFactory sfact = new StdSchedulerFactory();
            Scheduler scheduler = sfact.getScheduler();
            scheduler.start();
            scheduler.scheduleJob(jobDetail, trigger);
        }
    
    }
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import org.quartz.Job;
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
    import org.quartz.JobKey;
    import org.quartz.Trigger;
    
    
    public class HelloJob implements Job{
        
        public void execute(JobExecutionContext context) throws JobExecutionException {        
            
            //打印当前的执行时间
            Date date = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String currentTime = sdf.format(date);
            System.out.println("Current Exec Time : "+currentTime);
            //编写具体的业务逻辑        
            Trigger currentTrigger = context.getTrigger();
            System.out.println("Start Time is:"+sdf.format(currentTrigger.getStartTime()));
            System.out.println("End Time is:"+sdf.format(currentTrigger.getEndTime()));
            JobKey jobKey = currentTrigger.getJobKey();
            System.out.println("JobKey info --" +jobKey.getName()+": "+jobKey.getGroup()+": "+jobKey.getClass());
        }
    
    }
  • 相关阅读:
    2018-2019-1 20165202 20165210 20165214 实验一 开发环境的熟悉
    20165214 朱文远 缓冲区溢出漏洞实验
    2018-2019-1 20165214 《信息安全系统设计基础》第三周学习总结
    2018-2019-1 20165214 《信息安全系统设计基础》第2周学习总结
    2018-2019-1 20165214 《信息安全系统设计基础》第1周学习总结
    20165214 2017-2018-2 《Java程序设计》课程总结
    编程实现类似Linux系统的cp功能
    编程实现Linux系统的od功能
    2017-2018-2 20165214 实验五《网络编程与安全》实验报告
    2018-2019-1 20165212 20165313 2016522 实验一 开发环境的熟悉
  • 原文地址:https://www.cnblogs.com/zhou-test/p/9725054.html
Copyright © 2020-2023  润新知