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框架