JAVA Quartz框架
一种定时器,相当于加强版本的java.unti.Timer。支持集群。
在使用这个框架之前需要先链接几个概念:
** 触发器 Trigger**: 什么时候工作
* Trigger 就是触发器的意思,用来指定什么时间开始触发,触发多少次,每隔多久触发一次。
SimpleTrigger 可以方便的实现一系列的触发机制。
* Cron 是Linux下的一个定时器,功能很强大,但是表达式更为复杂
CronTrigger 就是用 Cron 表达式来安排触发时间和次数的。因为Cron 特别复杂,如果以前接触 过,可以按照Cron表达式来做触发器。
任务 Job: 做什么工作
Job 其实是由 3 个部分组成:
* JobDetail: 用于描述这个Job是做什么的
* 实现Job的类: 具体干活的
* JobDataMap: 给 Job 提供参数用的
调度器 Scheduler: 搭配 Trigger和Job
举个简单的例子:
public class TestJob implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
//更新数据库boc_test中org表的state字段为0
}
}
//时间调度模块
public class MyScheduler {
public static void main(String[] args) throws SchedulerException {
//创建调度器Schedule
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
//创建JobDetail实例,并与TestJob类绑定
JobDetail jobDetail = JobBuilder.newJob(TestJob.class).withIdentity("job1", "jobGroup1")
.build();
//创建trigger触发器 触发时间为每天上午10:15触发
Trigger cronTrigger = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "triggerGroup1")
.startNow()
.withSchedule(cronSchedule("015 10 ? * *"))
.build();
//开始执行
scheduler.scheduleJob(jobDetail, trigger);
scheduler.start();
}
}
上图就是使用CronTrigger触发器最简单的例子。如有需要可以直接复制小改立即使用。