本人想实现定时执行例如每天的7点定时执行,可是本人的代码却是到了点一直开始执行,每秒钟都在执行,本人想7点执行一次就可以,怎么改?
public void reScheduleJob() throws SchedulerException { String nowDate=DateUtils.toString(new Date(),DateUtils.ORA_DATE_TIMES3_FORMAT); // 运行时可通过动态注入的scheduler得到trigger,注意采用这种注入方式在有的项目中会有问题,假如遇到注入问题,可以采取在运行方法时候,获得bean来避免错误发生。 CronTriggerBean trigger = (CronTriggerBean) scheduler.getTrigger("cronTrigger", Scheduler.DEFAULT_GROUP); String dbCronExpression = "0 0 7 * * ?";// //每10s执行一次; //String dbCronExpression = "0/59 * * * * ?"; String originConExpression = trigger.getCronExpression(); //if (!originConExpression.equalsIgnoreCase(dbCronExpression)) { //获取待提醒的plantask任务 // 假如触发时间不相同 if(!originConExpression.equalsIgnoreCase(dbCronExpression)){ try { //本人的方法 trigger.setCronExpression(dbCronExpression); scheduler.rescheduleJob("cronTrigger", Scheduler.DEFAULT_GROUP,trigger); } catch (Exception e) { System.out.println("-- ParseException Error! --"); e.printStackTrace(); } } // } // 执行task System.out.println("Quartz 定时任务启动成功!"+nowDate); }
spring配置文件
<bean id="quartzTask" class="com.platform.application.secureprocess.action.PlanTaskQuartz"> <property name="scheduler" ref="schedulerFactory" /> </bean> <bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="quartzTask" /> <property name="targetMethod" value="reScheduleJob" /> <property name="concurrent" value="false" /> </bean> <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="jobtask" /> <!-- 默认的时间为 --> <property name="cronExpression"> <value>0 0/2 * * * ?</value> </property> </bean> <bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="cronTrigger" /> </list> </property> </bean>
解决方案:30分
<property name=”cronExpression”>
<value>0 0/2 * * * ?</value>
</property>
你这个设置的不是每两分钟执行一次么
<value>0 0/2 * * * ?</value>
</property>
你这个设置的不是每两分钟执行一次么
解决方案:30分
JobDetail job = JobBuilder.newJob(VoteJob.class).withIdentity("job"+i,"group"+i).build(); SimpleTrigger trigger = (SimpleTrigger) TriggerBuilder.newTrigger() .startAt(runTime) .withIdentity("trigger"+i,"group"+i) .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(120).withRepeatCount(pro.getCount())) .build(); scheduler.scheduleJob(job, trigger);
withRepeatCount 设置为1