一、几种任务调度的 Java 实现方法与比较 http://www.oschina.net/question/129540_28053 //特此感谢这篇文章的做者,我很喜欢这篇文章,里边介绍了好多关于目前定时器在工程中的使用,我总结就是多任务和单任务的模式使用,多任务不定时操做用quartz 单任务用Java的timer就行。
java
二、说说 quartz的使用 (这里我想说一个事情就是我在刚刚接触这个东西的时候走了些弯路,也怪我粗心了,固然也是学习的一个很差的毛病)sql
首先,用quartz 的时候重要的是找对对应的包,你不能找了一个2.2 的包放到1.6的程序中看运行效果,那必然会出错的。express
其次,用新包或者旧包哪一个好,这个看我的而言了,旧包须要倒入好几个,而新包只须要两个 见案例 (写下这篇文章时候是 2014-06-13 18:13),可是旧包好理解,更接近Java程序的运行理解,可是新包封装的更上一层,你能看到的东西不多,只是循序渐进的用它就能够了 各有利弊 看你习惯怎么用了。学习
最后,实在以为费劲就去找官网,下载带有案例的包,你照猫画虎总会吧,多试试,天然就明白怎么回事了ui
PS: 对于quartz来讲最重要的是expression的设置,这个表达式的设置你能够找官网上去看也能够直接去search,仍是那句话多试试不就出来了。spa
如下是我给出的案例. .net
包:code
Java程序1orm
package com.cibsolar.ey.timer; import java.util.Date; import org.quartz.CronScheduleBuilder; import org.quartz.CronTrigger; import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerFactory; import org.quartz.TriggerBuilder; import org.quartz.impl.StdSchedulerFactory; public class EyCronTrigger { public void run() throws Exception { SchedulerFactory sf = new StdSchedulerFactory(); Scheduler sched = sf.getScheduler(); //隔年执行任务 能够根据须要创建多个任务 System.out.println("------- Scheduling Jobs ----------------"); JobDetail job = JobBuilder.newJob(EyTask.class).withIdentity("trigger1","gourp1").build(); CronTrigger trigger = (CronTrigger) TriggerBuilder.newTrigger() .withIdentity("trigger1", "group1").withSchedule( CronScheduleBuilder.cronSchedule("59 59 23 31 12 ?")).build(); Date ft = sched.scheduleJob(job, trigger); System.out.println(job.getKey()+" execute time at:"+ft+"|| Execute expression:"+ trigger.getCronExpression()); System.out.println("------- Starting Scheduler ----------------"); sched.start(); System.out.println("------- Started Scheduler -----------------"); } }
Java程序2 ci
package com.cibsolar.ey.timer; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.text.SimpleDateFormat; import java.util.Date; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import com.cibsolar.ey.db.DBConnection; import com.cibsolar.ey.util.GetTable; public class EyTask implements Job{ public void execute(JobExecutionContext context)throws JobExecutionException { //写入你须要执行的代码 } }
Java程序3
public static void main(String[] args) { EyCronTrigger example = new EyCronTrigger(); try { example.run(); } catch (Exception e) { // TODO Auto-generated catch block System.out.println("Scheduler run :" +e.toString()); } }