quartz - helloworld

package cn.yishijie.simple;

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

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * @author chenjianhui on 2019/11/19
 */
public class HelloQuartzJob implements Job {


    //需要執行的任務放入在該方法下面
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        //java8時間api,獲取當前時間
        LocalDateTime localDateTime = LocalDateTime.now();
        //java8用於時間的格式化
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        //打印輸入語句
        System.out.println("hello quartz, time: "+ dateTimeFormatter.format(localDateTime));
    }
}

具體quartz的一些類的解釋在註釋中:

package cn.yishijie.simple;

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

import java.sql.Timestamp;
import java.time.LocalDateTime;

/**
 * @author chenjianhui on 2019/11/19
 */
public class HelloQuartz {
    //這個是簡單的輸出任務,每隔一分鐘打印hello quartz

    public static void main(String[] args) throws Exception{
        //獲取定時任務工廠類
        SchedulerFactory schedulerFactory = new StdSchedulerFactory();

        //通過工廠獲取對應的scheduler實例,有異常要拋出,我這裏直接在方法上拋出了
        Scheduler sched = schedulerFactory.getScheduler();

        //job任務類,綁定HelloQuartzJob中需要執行的任務
        JobDetail jobDetail0 = JobBuilder.newJob((Class<? extends Job>) HelloQuartzJob.class)
                .withIdentity("j0", "jg0").build();

        //定義觸發器,同時指定每分鐘執行一次,沒有指定開始時間,會馬上開始,我這裏指定了當前時間加上一分鐘,
        //比如,你是定義了在 2019-11-19 11:24:23,那麼在 2019-11-19 11:25:01會調用第一次(他是不計後面的那個23的)
        //如果不關閉這個任務,那麼以後每隔一秒都會調用一次
        Trigger trigger  = TriggerBuilder.newTrigger().withIdentity("t0","tg0")
                            .startAt(Timestamp.valueOf(LocalDateTime.now().plusMinutes(1L)))
                              .withSchedule(CronScheduleBuilder.cronSchedule("1 * * * * ?")).build();

        //綁定job和觸發器,一個job可以被多個觸發器使用,一個觸發器只能綁定一個job
        sched.scheduleJob(jobDetail0, trigger);

        //開啓定時任務
        sched.start();

        // 關閉定時任務,如果不關,會一直每隔一分鐘執行一次
        // sched.shutdown(true);

        // 結果:  hello quartz, time: 2019-11-19 11:46:01
    }
}

 

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