大家在使用quartz的时候,一般只设置了“targetObject”和“targetMethod”,MethodInvokingJobDetailFactoryBean类默认是并发执行的,这时候如果不设置“concurrent”为false,很可能带来并发或者死锁的问题,而且几率较小,不容易复现,请大家使用的时候注意设置“concurrent”。

   <bean id="cpm.MessageJobFactoryBean" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

       <property name="targetObject" ref="cpm.MessageJob"/>

       <property name="targetMethod" value="execute"/>

       <property name="concurrent" value="false"/>

   </bean>

concurrent   同时发生

concurrent:对于相同的JobDetail,当指定多个Trigger时, 很可能第一个job完成之前,第二个job就开始了。

定concurrent设为false,多个job不会并发运行,第二个job将不会在第一个job完成之前开始