成都学网站建设,汽车网站设计模板,自建网站三种模式,免费个人网站模板第2篇讲述了怎样给job传递参数或者随机数#xff0c;但是#xff0c;这个随机数不会更新#xff0c;举个例子#xff0c;执行第一次job的时 随机数3 #xff0c;执行第2次job#xff0c;随机数仍然是3#xff0c;因为执行每一次job都会实例化job实例对象
JobDataMap更新…第2篇讲述了怎样给job传递参数或者随机数但是这个随机数不会更新举个例子执行第一次job的时 随机数3 执行第2次job随机数仍然是3因为执行每一次job都会实例化job实例对象
JobDataMap更新的使用场景 举个例子执行第一次job的时随机数3 间隔5秒执行第2次job随机数仍然是35-8 使用PersistJobDataAfterExecution可更新JobDataMap JobDataMap更新示例
代码示例
package com.gblfy;import com.gblfy.job.MyJob;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;import java.util.Random;public class QuartzStart {public static void main(String[] args) throws SchedulerException {//创建SchedulerScheduler scheduler StdSchedulerFactory.getDefaultScheduler();scheduler.start();Random random new Random();int count random.nextInt(10);//创建JobDetailJobDetail jobDetail JobBuilder.newJob(MyJob.class)//唯一标识.withIdentity(jobDetail1, group1)//添加参数通过usingJobData方法传递给job.usingJobData(count,count).build();//创建TriggerTrigger trigger TriggerBuilder.newTrigger()//立即执行.startNow()//任务周期.withSchedule(SimpleScheduleBuilder.simpleSchedule()//间隔周期 单位s.withIntervalInSeconds(5)//一直执行.repeatForever()).build();//把jobDetail和trigger注册到scheduler中scheduler.scheduleJob(jobDetail, trigger);try {Thread.sleep(60000);} catch (InterruptedException e) {e.printStackTrace();}scheduler.shutdown();}
}
job
package com.gblfy.job;import lombok.Getter;
import lombok.Setter;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.PersistJobDataAfterExecution;import java.time.LocalTime;PersistJobDataAfterExecution
public class MyJob implements Job {GetterSetterprivate int count;Overridepublic void execute(JobExecutionContext context) throws JobExecutionException {LocalTime localTime LocalTime.now();count;context.getJobDetail().getJobDataMap().put(count,count);System.out.println(localTime.toString() ----count的值 count);}
}