package com.sohu.cache.schedule.jobs; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.Serializable; /** * job父类,包含一个抽象函方法,将实现推迟到具体的子类 * <p/> * User: lingguo * Date: 14-5-15 * Time: 下午6:04 */ public abstract class CacheBaseJob implements Job, Serializable { private static final long serialVersionUID = -6605766126594260961L; protected Logger logger = LoggerFactory.getLogger(this.getClass()); protected final String APPLICATION_CONTEXT_KEY = "applicationContext"; // 抽象方法,由子类实现,即具体的业务逻辑 public abstract void action(JobExecutionContext context); /** * 统计时间 * * @param context * @throws JobExecutionException */ @Override public void execute(JobExecutionContext context) throws JobExecutionException { long start = System.currentTimeMillis(); this.action(context); long end = System.currentTimeMillis(); long cost = (start - end); if (cost > 2000) { logger.warn("slowJob: job: {}, trigger: {}, cost: {} ms", context.getJobDetail().getKey(), context.getTrigger().getKey(), (end - start)); } else { logger.info("job: {}, trigger: {}, cost: {} ms", context.getJobDetail().getKey(), context.getTrigger().getKey(), (end - start)); } } }