问题描述
- 【spring+quartz框架】scheduler.reschedulejob后执行了多次
-
关于spring+quartz框架配置多线程调度任务,小弟有一事一直没搞明白一、quartz.properties中配置:
#===============================================================
#Configure Main Scheduler Properties
#===============================================================
org.quartz.scheduler.instanceName = QuartzScheduler
org.quartz.scheduler.instanceId = AUTO#===============================================================
#Configure ThreadPool
#===============================================================
org.quartz.threadPool.threadCount = 8
org.quartz.threadPool.threadPriority = 5
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool#===============================================================
#Configure JobStore
#===============================================================
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
org.quartz.jobStore.misfireThreshold = 60000二、XML配置文件中配置了jobDetail:
<bean id="monitorSMSCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="monitorSMSJobDetail"/> <property name="cronExpression"> <value>0/15 * * * * ?</value><!-- 每隔15秒调度执行 --> </property> </bean> 三、实现类调度方法 public void monitorSMS() { //scheduler.rescheduleJob(monitorSMSCronTrigger.getName(), Scheduler.DEFAULT_GROUP, monitorSMSCronTrigger); System.out.println("enter.."); } 问题是: 因配置了15秒执行一次调度,如果屏蔽掉scheduler.rescheduleJob这行代码,则每次是一个线程执行,如15:30:00 work_1执行,15:30:15 work_2执行,以此类推;如果不屏蔽,则每次8个线程并发执行,且每个线程执行N多次(N无规律,几十次到上百次吧) 求教大神,1 这是什么原因? 2 如果想让8个线程每次执行一遍应该如何做?
解决方案
simpleTrigger我记得可以配置repeatCount,cronTrigger有没有这方面的设置呢