Quartz的 使用
Quartz的三大组件
- 四个常用的Trigger
- SimpleSchedule
- ClendarIntervalSchedule
- DailyTimeIntervalScheduleBuilder
- CronSchedule link
导入依赖,这里
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
要小执行的程序,这里必须接入Job接口
public class MyJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("我正在执行");
}
}
public class Test {
public static void main(String[] args) throws SchedulerException {
//创建Job 中内部 通过反射来获得 所以这里要传入一个Myjob的Class的对象
JobDetail jobDetail = JobBuilder.newJob(MyJob.class)
.withDescription("工作描述")
.withIdentity("工作名称","工作的组")
.build();
/*
创建触发器(简单触发器 )
*/
SimpleScheduleBuilder simpleScheduleBuilder = SimpleScheduleBuilder.simpleSchedule();
simpleScheduleBuilder.withIntervalInSeconds(3);
simpleScheduleBuilder.withRepeatCount(0);
/*
日期触发器
*/
CalendarIntervalScheduleBuilder calendarIntervalScheduleBuilder = CalendarIntervalScheduleBuilder.calendarIntervalSchedule();
calendarIntervalScheduleBuilder.withIntervalInMonths(1);
/*
时间触发器
*/
DailyTimeIntervalScheduleBuilder dailyTimeIntervalScheduleBuilder = DailyTimeIntervalScheduleBuilder.dailyTimeIntervalSchedule();
//开始时间:9点30分
dailyTimeIntervalScheduleBuilder.startingDailyAt(TimeOfDay.hourAndMinuteOfDay(9,30));
//结束于每天的下午5点00分
dailyTimeIntervalScheduleBuilder.endingDailyAt(TimeOfDay.hourAndMinuteOfDay(17,0));
//每隔一小时执行一次
dailyTimeIntervalScheduleBuilder.withIntervalInHours(1);
//执行14次
dailyTimeIntervalScheduleBuilder.withRepeatCount(14);
//只在每个星期的星期三执行
dailyTimeIntervalScheduleBuilder.onDaysOfTheWeek(Calendar.WEDNESDAY);
Trigger trigger = TriggerBuilder.newTrigger()
.withDescription("触发器描述")
.withIdentity("触发器名称","工作的组")
.withSchedule(calendarIntervalScheduleBuilder)
.startAt(new Date())
.build();
//创建调度器,粘合工作和触发器这里我们有子类StdSchedulerFactory
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
scheduler.scheduleJob(jobDetail,trigger);
scheduler.start();
}
}