1、Quartz 简介
a、Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或 EJBs。
b、主页:http://www.quartz-scheduler.org/
现在写个简单的例子
package com.quartz; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class QuartzTest implements Job { @Override public void execute(JobExecutionContext arg0) throws JobExecutionException { // TODO Auto-generated method stub System.out.println("Quartz is Test"); } }
package com.quartz; import java.util.Date; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SchedulerFactory; import org.quartz.SimpleTrigger; import org.quartz.impl.StdSchedulerFactory; public class QuartzTest1 { public void run() throws SchedulerException { SchedulerFactory schedulerFactory=new StdSchedulerFactory(); Scheduler scheduler=schedulerFactory.getScheduler(); JobDetail jobDetail=new JobDetail("job1", "group1", QuartzTest.class); SimpleTrigger simpleTrigger=new SimpleTrigger("trigger1", "group1", new Date(), null, 10, 1500L); scheduler.scheduleJob(jobDetail,simpleTrigger); scheduler.start(); } public static void main(String[] args) throws SchedulerException { QuartzTest1 quartzTest1=new QuartzTest1(); quartzTest1.run(); } }
需要的jar包:commons-logging-1.0.4.jar,quartz-all-1.6.0.jar,jta.jar。
参考了(xiaoyuqi00 的文章)。如果想知道更多的可参考收藏。
下面可以使用jdk的Timer这个类也可以实现类似的功能,来让程序在指定的时间去执行指定的功能。
public void init() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 59); calendar.set(Calendar.SECOND, 59); Date date = calendar.getTime();
//date是在指定的时间(即每天23点59分59秒)去执行该任务。第三个参数为间隔多长时间后再次执行指定任务 timer.schedule(new Task(rasManagerService, rasService, configService), date, 1000 * 60 * 60 * 24); }
class Task extends TimerTask
Task重写里面的run()方法,进行你自己的业务逻辑的处理。