定时任务quartz
触发器 Trigger: 什么时候工作
任务 Job: 做什么工作
调度器 Scheduler: 搭配 Trigger和Job
定义一个job
实现quartz的Job接口,重写需要执行的方法。
Job 其实是由 3 个部分组成:
JobDetail: 用于描述这个Job是做什么的
实现Job的类: 具体干活的
JobDataMap: 给 Job 提供参数用的
public class MyJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
String format = new SimpleDateFormat("现在是yyyy-MM-dd日,具体时间: HH:mm:ss").format(new Date());
System.out.println(format);
}
}
调度器和触发器
@Test
public void test() throws SchedulerException, InterruptedException {
//获取一个定时调度器
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
//修饰job的,比如分组
JobDetail jobDetail = JobBuilder.newJob(MyJob.class).withIdentity("myjob","打印时间")
.build();
//触发器,如何触发
SimpleTrigger trigger = newTrigger().withIdentity("mytrigger", "处理打印时间的job").startNow()
.withSchedule(simpleSchedule()
.withIntervalInSeconds(2) //每隔2秒执行一次
.withRepeatCount(10)).build();
//调度job和trigger
scheduler.scheduleJob(jobDetail, trigger);
scheduler.start();
Thread.sleep(5000);
scheduler.shutdown();
}
15:20:44.324 [DefaultQuartzScheduler_Worker-3] DEBUG org.quartz.core.JobRunShell - Calling execute on job 打印时间.myjob
现在是2020-09-11日,具体时间: 15:20:44