zoukankan      html  css  js  c++  java
  • 浅谈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());
        }
    
    }
  • 相关阅读:
    Unreal Engine 4官网教程
    快速上手制作暗黑类游戏动作打击感的一些要点
    充分利用 UE4 中的噪声
    综合帖:多角度闲聊游戏打击感
    鹅厂内部分享:七步教你从无到有做数值
    二叉树、二叉搜索树、平衡二叉树、B树、B+树的精确定义和区别探究
    MySQL的InnoDB索引原理详解
    分布式核心
    Mysql 原理以及常见mysql 索引等
    redis核心原理
  • 原文地址:https://www.cnblogs.com/zhou-test/p/9725054.html
Copyright © 2011-2022 走看看