quartz.net 状态保存

refs:

http://wwwcomy.iteye.com/blog/1747040



@PersistJobDataAfterExecution  
@DisallowConcurrentExecution  
public class MyParaJob implements Job {  
    private int myCount = 0;  
    private static int myStaticCount = 0;  
  
    public static final String JOB_DATA_MAP_KEY = "key1";  
  
    public MyParaJob() {  
    }  
  
    @Override  
    public void execute(JobExecutionContext context) throws JobExecutionException {  
        String jobName = context.getJobDetail().getKey().getName();  
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");  
  
        JobDataMap data = context.getJobDetail().getJobDataMap();  
        int jobDataMapInt = data.getInt(JOB_DATA_MAP_KEY);  
        // 这里注释的内容用于理解DisallowConcurrentExecution这个注解  
        //if (jobDataMapInt == 11) {  
        //  try {  
        //      Thread.sleep(11000);  
        //  } catch (InterruptedException e) {  
        //      e.printStackTrace();  
        //  }  
        //}  
        System.out.println("任务Key:" + jobName + " 正在执行,执行时间: " + dateFormat.format(Calendar.getInstance().getTime()));  
        System.out.println("***private成员变量为:" + myCount + ",static成员变量为:" + myStaticCount + ",JobDataMap保存的变量为:" + jobDataMapInt);  
        myCount++;  
        jobDataMapInt++;  
        data.put(JOB_DATA_MAP_KEY, jobDataMapInt);  
  
        myStaticCount++;  
    }  
}  



1.参数传递。使用job.getJobDataMap().put()方式向Job当中传递参数,JobDataMap类实际上最终继承了实现Map接口的"DirtyFlagMap"类,而DirtyFlagMap内部又保存了一个HashMap的引用,操作都是针对这个HashMap进行的。 


2.PersistJobDataAfterExecution这个注解的使用。JobDataMap的持久化,加上注解之后,每次执行完,JobDataMap都会被序列化,上次任务执行放入的值都会保存下来。 


3.DisallowConcurrentExecution 注解,加上这个注释之后可以防止多个任务同时并发这种事情发生。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值