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点半触发执行一次