quartz是一个任务调度框架,它能够设置在任意时间有规律的作一些事情。好比每隔一个小时记录一第二天志,每周三统计一次等等。html
做者使用的是quartz-all-1.6.5.jar版本的。其实它就三点要素,第一,时间调度器(Scheduler);第二,程序触发点(Trigger&SimpleTrigger)即该程序何时开始执行,怎么执行;第三,程序执行任务(JobDetail & Job)即到了这个时间点,程序要执行的内容是什么;java
初始化quartz使得该程序在项目启动时触发。web
<servlet> <servlet-name>QuartzInitializer</servlet-name> <servlet-class> org.quartz.ee.servlet.QuartzInitializerServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <listener> <listener-class>com.sheca.eausp.common.util.QuartzTest</listener-class> </listener>
package com.sheca.eausp.common.util; import java.util.Date; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import org.apache.log4j.Logger; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SimpleTrigger; import org.quartz.impl.StdSchedulerFactory; public class QuartzTest implements ServletContextListener{ private static Logger logger = Logger.getLogger(CacheTime.class); @Override public void contextDestroyed(ServletContextEvent arg0) { // TODO Auto-generated method stub } @Override public void contextInitialized(ServletContextEvent arg0) { try { //建立scheduler logger.info("cache scheduler begin..."); Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); JobDetail jobDetail = new JobDetail("updateCache", "group", MyQuartz.class);//建立任务,真正的逻辑在MyQuartz中 SimpleTrigger trigger = new SimpleTrigger("triggerName", "group");//建立简单程序触发器 trigger.setStartTime(new Date());//开始运行时间 trigger.setRepeatInterval(3*60*1000);//运行间隔单位为毫秒 trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);//程序重复次数 scheduler.scheduleJob(jobDetail, trigger);//将程序触发器和任务加入程序调度器 if (scheduler.isShutdown()) { scheduler.start(); } }catch (Exception e) { logger.error("Exception is : ", e); } } }
任务执行类须要实现Job接口apache
package com.sheca.eausp.common.util; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class CacheQuartz implements Job { @Override public void execute(JobExecutionContext arg0) throws JobExecutionException { System.out.println("每隔三分钟执行一次该方法.."); } }
推荐博客:https://www.cnblogs.com/drift-ice/p/3817269.html框架