quartz 定時任務的使用

參考文章:https://blog.csdn.net/noaman_wgs/article/details/80984873

定時任務有這麼幾部分組成,專門寫業務邏輯的地方(job);定時信息的設置(Trigge ); 調度器 Scheduler(將任務job與 觸發器Trigge 結合 );

完整的demo 直接上代碼吧:

package com.quartz.task;


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

/**
 * @ClassName TaskJob
 * @Description TODO
 * @Date 2019/10/17 10:22
 * @Version 1.0.0
 **/
public class TaskJob implements Job {
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        System.out.println("任務執行中---------");
    }
}

 

 

package com.quartz.task;


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

import java.util.Date;
import java.util.concurrent.TimeUnit;

/**
 * @ClassName MyScheduler
 * @Description TODO  該類是定時任務實現的實例 完全基於代碼 ,而不是xml方式實現的
 * @Date 2019/10/17 10:23
 * @Version 1.0.0
 **/
public class MyScheduler {
    public static void main(String[] args) throws SchedulerException, InterruptedException {
        //1 創建 scheduler 實例
        SchedulerFactory scheFactory =new StdSchedulerFactory();
        Scheduler scheduler = scheFactory.getScheduler();
        // 2 創建JobDeatil 實例
        JobDetail jobDetail = JobBuilder.newJob(TaskJob.class)
                .withIdentity("job1", "group1").build();
        // 3 創建Trigger實例 每隔一秒 執行一次
//        Trigger trigger = TriggerBuilder.newTrigger()
//                .withIdentity("trigger", "trigger")
//                .startNow()
//                .withSchedule(
//                                SimpleScheduleBuilder.simpleSchedule()
//                                        .withIntervalInMilliseconds(1000)
//                                        .repeatForever()//一直執行
//                ).build();
      // 創建 CronTrigger
        Date startDate = new Date();
        startDate.setTime(startDate.getTime() + 5000);
        Date endDate = new Date();
        endDate.setTime(startDate.getTime() + 5000);

        Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity("trigger", "trigger")
                .usingJobData("job1", "這是jobDetail1的trigger")
                .startNow()//立即生效
                .startAt(startDate)
                .endAt(endDate)
                // cron  表達式
                .withSchedule(CronScheduleBuilder.cronSchedule("*/5 * * * * ?"))
                .build();



        // 4執行
        scheduler.scheduleJob(jobDetail,trigger);
        System.out.println("start  開始執行定時任務");
        scheduler.start();
        //睡眠
        TimeUnit.MINUTES.sleep(1);
        scheduler.shutdown();
        System.out.println("--------scheduler shutdown ! ------------");


    }
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章