使用Cron表達式建立定時任務

 

CronTrigger
CronTrigger功能很是強大,是基於日曆的做業調度,而SimpleTrigger是精準指定間隔,因此相比SimpleTrigger,CroTrigger更加經常使用。CroTrigger是基於Cron表達式的,先了解下Cron表達式:
由7個子表達式組成字符串的,格式以下:工具

[秒] [分] [小時] [日] [月] [周] [年]測試

Cron表達式的語法比較複雜,
如:* 30 10 ? * 1/5 *
表示(從後往前看)
[指定年份] 的[ 週一到週五][指定月][不指定日][上午10時][30分][指定秒]ui

又如:00 00 00 ? * 10,11,12 1#5 2018
表示2018年十、十一、12月的第一週的星期五這一天的0時0分0秒去執行任務。blog

下面是給的一個例子: 字符串


可經過在線生成Cron表達式的工具:http://cron.qqe2.com/ 來生成本身想要的表達式。 get

 

 

public class HelloScheduler{
    public static void main(String[] args) throws SchedulerException, InterruptedException {
        // 一、建立調度器Scheduler
        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        Scheduler scheduler = schedulerFactory.getScheduler();
        // 二、建立JobDetail實例,並與PrintWordsJob類綁定(Job執行內容)
        JobDetail jobDetail = JobBuilder.newJob(PrintWordsJob.class)
                .usingJobData("jobDetail1", "這個Job用來測試的")
                .withIdentity("job1", "group1").build();
        // 三、構建Trigger實例,每隔1s執行一次
        Date startDate = new Date();
        startDate.setTime(startDate.getTime() + 5000);

        Date endDate = new Date();
        endDate.setTime(startDate.getTime() + 5000);

        CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "triggerGroup1")
                .usingJobData("trigger1", "這是jobDetail1的trigger")
                .startNow()//當即生效
                .startAt(startDate)
                .endAt(endDate)
                .withSchedule(CronScheduleBuilder.cronSchedule("* 30 10 ? * 1/5 2018"))
                .build();

        //四、執行
        scheduler.scheduleJob(jobDetail, cronTrigger);
        System.out.println("--------scheduler start ! ------------");
        scheduler.start();
    }
}
相關文章
相關標籤/搜索