大家在使用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完成之前开始
本文讨论了在使用Quartz时,如果仅设置了'targetObject'和'targetMethod',而未正确设置'concurrent'属性,可能导致的并发执行问题及死锁风险。通过设置'concurrent'为false,可以确保多个任务不会同时运行,有效预防此类问题。
975

被折叠的 条评论
为什么被折叠?



