1.5-Quartz大哥(Trigger)

2017-12-11  本文已影响0人  王子也寂寞

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

一.触发器通用属性

二.Trigger通用属性的简单使用

Job类

public void execute(JobExecutionContext context) throws JobExecutionException {
        //打印当前的执行之间,格式为2017-01-01 00:00:00
        Date date = new Date();
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("Current Exec Time is : " + sf.format(date));
        //编写具体的业务逻辑
        Trigger currentTrigger = context.getTrigger();
        System.out.println(currentTrigger.getStartTime() + "-----" + currentTrigger.getEndTime());
        JobKey jobKey = currentTrigger.getJobKey();
        System.out.println(jobKey.getName() + "####" + jobKey.getGroup());
    }

scheduler类

public static void main(String[] args) {
        //创建一个JobDetail实例,将该实例与HelloJob Class绑定
        JobDetail jobDetail = JobBuilder.newJob(HelloJob.class)
                .withIdentity("myJob", "JobGroup1")
                .build();

        //创建一个Trigger实例,用来触发Job来执行的
        //获取距离当前时间3秒后的时间
        Date startDate = new Date();
        startDate.setTime(startDate.getTime() + 3000);
        //获取距离当前6s后的时间
        Date endDate = new Date();
        endDate.setTime(endDate.getTime() + 6000);


        //立即执行,并且每隔两秒执行一次
        Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity("myTrigger", "TriggerGroup1")
                .startAt(startDate)
                .endAt(endDate)
                .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2)
                        .repeatForever())
                .build();
        //创建scheduler实例,有很多工厂,这个是最简单的
        SchedulerFactory sfact = new StdSchedulerFactory();
        try {
            Scheduler scheduler = sfact.getScheduler();
            scheduler.start();
            //打印当前的执行时间
            Date date = new Date();
            SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            System.out.println("Current Exec Time is:" + sf.format(date));
            scheduler.scheduleJob(jobDetail, trigger);
        } catch (SchedulerException e) {
            e.printStackTrace();
        }
    }
上一篇 下一篇

猜你喜欢

热点阅读