`

MethodInvokingJobDetailFactoryBean的并发问题

阅读更多
大家在使用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完成之前开始
分享到:
评论
1 楼 Supereo 2013-07-23  
虽然很细节,但是还是需要注意的!多谢!

相关推荐

    spring java 定时器 执行两次 quartz

    总的来说,Spring集成Quartz提供了灵活的定时任务解决方案,但同时需要注意避免配置错误和并发问题,以防止任务被执行多次。通过理解Quartz的工作原理和Spring的定时任务API,我们可以有效地管理定时任务,确保它们...

    Quartz2.2.1存储与持久化-基于Spring的配置

    这里,`targetObject`是执行任务的方法所在的对象,`targetMethod`是实际执行的方法名,`concurrent`则指明该任务是否可以并发执行。 接下来,我们需要创建触发器(Trigger)来指定Job的执行时间。`...

    Spring整合Quartz分布式调度的示例代码

    6. 分布式调度系统的优点:分布式调度系统可以避免系统资源的浪费和应用逻辑的问题,提高了应用的高可用和高并发性。 7. Quartz的优点:Quartz是一个成熟的任务调度系统,提供了灵活的配置方式和高性能的执行能力。...

    spring设置动态定时任务.pdf

    通过正确配置`MethodInvokingJobDetailFactoryBean`、`CronTriggerBean`以及`SchedulerFactoryBean`,并结合业务接口动态更新Cron表达式,我们可以灵活地控制任务的执行。同时,确保并发控制和任务管理的安全性是...

    ssm集成Quartz1

    【SSM集成Quartz1】是指在Spring、Struts2和...接着,使用`MethodInvokingJobDetailFactoryBean`来指定任务执行的具体方法,如`doTask()`,并设置是否允许并发执行。 对于`jobPasswordExpired`,配置如下: ```xml ...

    Spring 整合Quartz两种方式

    `concurrent`属性设置为`false`意味着这个方法不会并发执行。 然后,同样需要配置Trigger来触发Job: ```xml * * * ?"/&gt; ``` 总结起来,`JobDetailBean`适合已有独立Job类的情况,可以更好地封装业务逻辑。...

    spring quartz 集群模式

    这里`myTargetObject`是一个bean引用,表示执行任务的目标对象,`executeTask`是该对象上的执行方法,`concurrent`属性决定是否允许多线程并发执行。 总结来说,Spring与Quartz的集群模式是通过共享数据库存储和...

    Spring 时间配置

    在Spring中使用Quartz,首先需要配置`MethodInvokingJobDetailFactoryBean`,它定义了定时任务的具体行为,即哪个对象的哪个方法需要被调用。例如: ```xml ...

    Spring Quartz1.8.x

    10. **最佳实践**:在实际应用中,需要注意Job和Trigger的设计,避免创建过于复杂的调度,同时确保Job的执行是无状态的,以防止并发问题。另外,合理设计任务的依赖关系,以及定期清理不再需要的Trigger,都是优化...

    spring 定时器时间配置.doc

    `concurrent`属性设置为`false`意味着如果存在多个触发器,任务将按顺序执行,而不是并发执行。 接下来,`cronTrigger` bean是`CronTriggerBean`的一个实例,它关联了前面定义的`jobDetail`,并设置了`...

    spring定时器

    然而,当需要更复杂的工作调度,比如并发控制、依赖注入等,Spring推荐与Quartz集成。Quartz提供了一个丰富的API,支持集群、多Job、多Trigger、持久化任务等高级功能。要集成Quartz,首先需要在项目中添加Quartz库...

    spring结合quartz的定时的2种方式

    - `concurrent`:是否允许并发执行,默认为 `true`。 ```xml &lt;bean id="businessTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"&gt; ``` 3. **配置触发器*...

    spring mvc quartz 动态设置时间

    - `schedulerJobDetail`:Spring的`MethodInvokingJobDetailFactoryBean`用于定义一个任务,它将在`sysScheduleService`中调用`reScheduleJob`方法。 - `cronTrigger`:使用`CronTriggerBean`定义了一个基于CRON...

    quarzt定时调度任务解析

    Quartz是一款强大的任务调度框架,常用于Java应用中,以实现程序在特定时间自动执行特定任务。...此外,Quartz提供了丰富的API和特性,如并发控制、集群支持和持久化存储,以满足大型系统对任务调度的复杂需求。

    Spring-quartz实现定时器(含代码).doc

    接着,我们定义了一个名为 `firstJob` 的任务,它使用 `MethodInvokingJobDetailFactoryBean` 来指定要执行的类和方法。在这里,`targetObject` 是任务类的引用,`targetMethod` 是要执行的方法名。在这个例子中,...

    Spring定时器

    `MethodInvokingJobDetailFactoryBean`用于指定调用哪个类的哪个方法,而`CronTriggerBean`则定义了Cron表达式,决定任务的执行时间。 - **启动调度器**:最后,通过`SchedulerFactoryBean`来创建并启动调度器,...

    spring中quartz定时任务实例及配置说明

    2. **Job Detail Bean**(`weatherProcessJobDetail`):这是一个`MethodInvokingJobDetailFactoryBean`,它用来指定`weatherProcessJob` bean上的哪个方法(即`executeJob`)将在调度时被调用。`concurrent`属性...

    Quartz在Spring中动态设置cronExpression

    而动态定时任务的出现解决了这个问题,它允许我们在程序运行时动态调整任务的执行计划。 在Spring中配置Quartz,通常需要定义`JobDetail`和`Trigger`。`JobDetail`定义了任务的具体内容,而`Trigger`则指定了任务的...

    Quartz 框架快速入门

    如果在运行时遇到`java.lang.NoClassDefFoundError:javax/transaction/UserTransaction`错误,可以引入jta.jar来解决这个问题。 在Quartz中,每个任务称为一个Job,它必须实现`org.quartz.Job`接口。这个接口只有一...

Global site tag (gtag.js) - Google Analytics