> 文章列表 > Quartz 单例定时任务

Quartz 单例定时任务

Quartz 单例定时任务

1、引入jar包,继承 Job 接口,编写需要执行的业务逻辑

<dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.3.2</version></dependency>
public class DemoJob implements Job {@Overridepublic void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {System.out.println("我是一个定时任务执行逻辑");}
}

2、编写定时任务执行器

public class QuartzExecutor {//1、创建一个任务调度器(好比公交调度站)public static Scheduler createScheduler() throws SchedulerException {SchedulerFactory schedulerFactory = new StdSchedulerFactory();Scheduler scheduler = schedulerFactory.getScheduler();return scheduler;}//2、创建一个任务(好比某一个公交车出行)public static JobDetail createJob(){JobBuilder jobBuilder = JobBuilder.newJob(DemoJob.class);jobBuilder.withIdentity("jobName","myjob");JobDetail jobDetail = jobBuilder.build();return jobDetail;}//3、创建作业任务时间出发器public static Trigger createTrigger(){CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity("triggerName", "myTrigger").startNow().withSchedule(CronScheduleBuilder.cronSchedule("*/2 * * * * ?")).build();return cronTrigger;}public static void main(String[] args) throws SchedulerException {//1、创建一个任务调度器(好比公交调度站)Scheduler scheduler = QuartzExecutor.createScheduler();//2、创建一个任务(好比某一个公交车出行)JobDetail job = QuartzExecutor.createJob();//3、创建作业任务时间出发器Trigger trigger = QuartzExecutor.createTrigger();//4、根据任务调度器根据时间触发器执行我们的任务scheduler.scheduleJob(job,trigger);scheduler.start();}
}

备注:

cron表达式有七个位置组成:

1、Second(秒)  0~59

2、Minutes(分)  0~59

3、Hours (小时) 0~23

4、Day of Month (天) 1~31 ,有的月份不足31天

5、Month(月) 0~11 ,或者 JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC

6、Day of Week(周) 1~7,1=SUN或者 SUN,MON,TUE,WEB,THU,FRI,SAT

7、Year(年)1970~2099 可选项

示例:

0 0 11 * * ? 每天的11点触发执行一次

0 30 10 1 * ? 每月1号上午10点半触发执行一次