quartz
主要分为三个部分
1.任务Job
需要执行的具体工作
2.任务触发器Trigger
在特定的事件触发任务的执行
3.任务调度器Scheduler
任务的实际执行者,负责粘合任务和触发器
具体操作如下:
创建maven项目:
导入所依赖的jar包:
pom.xml
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
写具体的任务Job:
//实现org.quartz包下Jop的接口
public class RemindJob implements Job {
/**
* Jop接口中只有一个execute方法,在实现类中实现该方法以执行具体的任务
* @param jobExecutionContext 通过该参数能获取调度上下文的各种信息
* @throws JobExecutionException
*/
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
// 具体的业务操作
//举例
Integer i = null;
i+=1;
System.out.println("我正在执行!"+i);
}
}
创建jop任务
//创建jop任务
//通过反射对ReminJop类实例化,用JobDetail进行装载
//JobDetail的第一个参数:名称;第二个参数:所属的组;第三个参数:具体的对象
JobDetail jop=new JobDetail("myJop","A",RemindJob.class);
触发器
//创建触发器trigger。SimpleTrigger是trigger的子类
SimpleTrigger trigger=new SimpleTrigger("myTrigger",SimpleTrigger.REPEAT_INDEFINITELY,3000);
//开始执行事件
trigger.setStartTime(new Date(System.currentTimeMillis()+1000));
3.任务调度器Scheduler
//创建一个调度器
//获取Scheduler工厂SchedulerFactory
SchedulerFactory factory = new StdSchedulerFactory();
//获取调度器
Scheduler scheduler=factory.getScheduler();
//粘合任务和调度器
scheduler.scheduleJob(jop,trigger);
//启动运行
scheduler.start();
//关闭
scheduler.shutdown();
CronTrigger
是Trigger的子类,通常我们使用CronTrigger去设置触发器调度时间。
//创建CronTrigger触发器
CronTrigger cronTrigger=new CronTrigger("myCronTrigger","B","0 33 22 ? * *");
Cron表达式
Cron表达式是由6~7个由空格分隔的时间元素组成,第7个元素是可选的。
特殊字符:
1." * " :表示每个值,可用于所有字段;
2." ? “:该字段仅用于”月份中的那一天“和”星期几“,表示不指定值;
3.” - " :中划线,表示一个范围;
4." , " :使用逗号间隔数据,表示一个列表;
5." / " :通常表示x/y, x 为起始值,y 表示值得增量
注意:第4位和第6位,不能同时为” ?“,不能同时为 ” * “。
spring整合quartz
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.3</version>
</dependency>
直接使用该注解即可
@Scheduled(cron = "0 0/10 15 * * ?")