class CacheBaseJob implements Job, Serializable {
    private static final long serialVersionUID = -6605766126594260961L;
    protected Logger logger = LoggerFactory.getLogger(this.getClass());

    protected final static String APPLICATION_CONTEXT_KEY = "applicationContext";

    // 抽象方法，由子类实现，即具体的业务逻辑
    public abstract void action(JobExecutionContext context);

    /**
     * 统计时间
     *
     * @param context
     * @throws JobExecutionException
     */
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {<FILL_FUNCTION_BODY>}
}

        long start = System.currentTimeMillis();
        this.action(context);
        long cost = System.currentTimeMillis() - start;
        if (cost > 2000) {
            logger.warn("slowJob: job: {}, trigger: {}, cost: {} ms", context.getJobDetail().getKey(),
                    context.getTrigger().getKey(), cost);
        } else {
            logger.debug("job: {}, trigger: {}, cost: {} ms", context.getJobDetail().getKey(),
                    context.getTrigger().getKey(), cost);
        }
    
<no_super_class>