zoukankan      html  css  js  c++  java
  • quartz 之job

    job 在数据库中存储是是一个 class name,意味着其实际的执行内容是可以随时变的—— 它跟着class 文件而变。

     
    这其实给与了 我们很大的灵活性!
     
     
    job 是线程安全的? 答案是 yes,因为:quartz 是根据 表的 jobClass 字段, 每次创建job 实例,然后执行的!
     
     
     
    job 里面可以有成员变量, 但是 因为每次job 都是被new 出来的, 所以如果其属性如不是static,那么每次都要实例这个任务类。。
     
     
    //这个属性如不是static,那么每次都要实例这个任务类,始终打印为: 1
    private static int _counter = 1;
     

    import java.text.SimpleDateFormat;  
    import java.util.Date;  
    import org.quartz.DisallowConcurrentExecution;  
    import org.quartz.Job;  
    import org.quartz.JobDataMap;  
    import org.quartz.JobExecutionContext;  
    import org.quartz.JobExecutionException;  
    import org.quartz.JobKey;  
    import org.quartz.PersistJobDataAfterExecution;  
    import org.slf4j.Logger;  
    import org.slf4j.LoggerFactory;  
      
    @PersistJobDataAfterExecution  
    @DisallowConcurrentExecution  
    public class ColorJob implements Job {  
      
        private static Logger _log = LoggerFactory.getLogger(ColorJob.class);      
         
        public static final String FAVORITE_COLOR = "favorite color";  
        public static final String EXECUTION_COUNT = "count";      
         
        //这个属性如不是static,那么每次都要实例这个任务类,始终打印为: 1  
        private static  int _counter = 1;  
         
        public ColorJob() {  
        }    
        public void execute(JobExecutionContext context)  
            throws JobExecutionException {  
      
            
            JobKey jobKey = context.getJobDetail().getKey();          
             
            JobDataMap data = context.getJobDetail().getJobDataMap();  
            String favoriteColor = data.getString(FAVORITE_COLOR);  
            int count = data.getInt(EXECUTION_COUNT);  
              
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");          
              
            _log.error("任务Key: " + jobKey + " ,执行时间:  " + sdf.format(new Date()) + "
    " +  
                "  传递参数(favorite color): " + favoriteColor + "
    " +   
                "  传递参数(count):  " + count + "
    " +   
                "  ColorJob静态变量值: " + _counter);  
           
            count++;  
            data.put(EXECUTION_COUNT, count);          
            
            _counter++;  
        }  
    }  

    代码参考 https://blog.csdn.net/yimeng528/article/details/84415579


    版权声明
    本文原创发表于 博客园,作者为 阿K .     本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。
    欢迎关注本人微信公众号:觉醒的码农,或者扫码进群:

  • 相关阅读:
    第 9 章
    第 8 章
    第 7 章
    第 6 章
    第 5 章
    第 4 章
    跳舞链解数独
    minic 类型声明与变量定义句型处理
    minic 动作句型处理
    minic 符号表
  • 原文地址:https://www.cnblogs.com/FlyAway2013/p/15172085.html
Copyright © 2011-2022 走看看