Quartz简单了解
什么是Quartz
- Quartz是一个开源的作业调度框架,由java编写,在.NET平台为Quartz.Net,通过Quart可以快速完成任务调度的工作.
- Quartz能干什么/应用场景
- 如网页游戏中挂机自动修炼如8个小时,人物相关数值进行成长,当使用某道具后,时间减少到4个小时,人物对应获得成长值.这其中就涉及到了Scheduler的操作,定时对人物进行更新属性操作,更改定时任务执行时间.
- 网页游戏中会大量涉及到Scheduler的操作,有兴趣的朋友可自行联想.
- 企业中如每天凌晨2点触发数据同步、发送Email等操作
- 同类框架对比
- TimeTask TimeTask在Quartz前还是显得过于简单、不完善,不能直接满足开发者的较为复杂的应用场景.
- 资源
- 官网:http://www.quartz-scheduler.org/
- 下载:http://www.quartz-scheduler.org/downloads
- maven pom<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
5.demo
二、首先,要创建一个任务,quartz规定任务必须实现org.quarta.Job接口,此接口就一个方法execute,这个方法就是任务执行的时候允许的方法,具体的业务实现在这个方法里,我这里只进行了简单的打印。
package com.tiexiu.myScheduler; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class MyJob implements Job{ public void execute(JobExecutionContext arg0) throws JobExecutionException { System.out.println("Hello World!"); } }
三、创建完任务之后,我们还要创建一个包含任务信息的jobDetail,一个管理任务执行的促发器trigger,最后就是调度任务。
package com.tiexiu.myScheduler; import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SchedulerFactory; import org.quartz.SimpleScheduleBuilder; import org.quartz.Trigger; import org.quartz.TriggerBuilder; import org.quartz.impl.StdSchedulerFactory; public class MyJobTest { public static void main(String[] args) throws SchedulerException { //获取调度工厂 SchedulerFactory sf = new StdSchedulerFactory(); //获得一个scheduler(调度程序) Scheduler scheduler = sf.getScheduler(); //获得一个jobDetail(工作细节) JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("MyJob").build(); //获得一个trigger(触发器) Trigger trigger = TriggerBuilder.newTrigger(). withIdentity("trigger1", "group1").startNow(). withSchedule(SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(1) //时间隔多久触发 .withRepeatCount(10)) //触发多少次 .build(); //把任务和触发器放到scheduler中 scheduler.scheduleJob(job,trigger); //开始任务调度 scheduler.start(); } }
这样我们就做了一个任务调度,运行时会每隔一秒再次运行job里面的调度,运行10次。
未完待续~~