Java 如何配置多个Quartz单线程作业

Java 如何配置多个Quartz单线程作业,java,spring,quartz-scheduler,Java,Spring,Quartz Scheduler,我有两个不同的工作,必须在同一时间触发 我想给他们每一个单独的线程。 当然,我可以将Quartz配置为仅使用一个线程,即设置属性 org.quartz.threadPool.threadCount = 1 但这意味着,两个作业将使用相同的线程。如果我将threadCount设置为2,则可能会触发第一个作业两次,而另一个作业将等待 那么,我如何在独立的线程中运行这些作业呢 我的Spring配置如下: <bean name="Job1" class="org.springframework.

我有两个不同的工作,必须在同一时间触发

我想给他们每一个单独的线程。 当然,我可以将Quartz配置为仅使用一个线程,即设置属性

org.quartz.threadPool.threadCount = 1
但这意味着,两个作业将使用相同的线程。如果我将threadCount设置为2,则可能会触发第一个作业两次,而另一个作业将等待

那么,我如何在独立的线程中运行这些作业呢

我的Spring配置如下:

<bean name="Job1" class="org.springframework.scheduling.quartz.JobDetailBean">
  <property name="jobClass" value="test.job1"/>
</bean>

<bean id="CronTrigger1" class="org.springframework.scheduling.quartz.CronTriggerBean">
  <property name="jobDetail" ref="Job1"/>
  <property name="cronExpression" value="0 * 6-21 * * ?" />
</bean>

<bean name="Job2" class="org.springframework.scheduling.quartz.JobDetailBean">
  <property name="jobClass" value="test.job2"/>
</bean>

<bean id="CronTrigger2" class="org.springframework.scheduling.quartz.CronTriggerBean">
  <property name="jobDetail" ref="Job2"/>
  <property name="cronExpression" value="0 * 6-21 * * ?" />
</bean>

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean" destroy-method="destroy">
  <property name="waitForJobsToCompleteOnShutdown">
    <value>true</value>
  </property>
  <property name="configLocation">
    <value>classpath:quartz.properties</value>
  </property>
  <property name="triggers">
    <list>
      <ref bean="CronTrigger1"/>
      <ref bean="CronTrigger2"/>
    </list>
  </property>
</bean>

真的
类路径:quartz.properties

我的建议是使用不同的SchedulerFactoryBean。

我的建议是使用@DisallowConcurrentExecution注释作业类。请参阅。

为什么您认为由于threadvpool较大,第一个作业将被调度两次?如果我每分钟调度一次作业执行,而最后一次执行耗时超过一分钟,则调度程序可以并行执行该作业的第二个实例。。。我说得对吗?我想你可能需要两种不同的SchedulerFactoryBean。顺便说一句,你为什么需要这个?您的类不是线程安全的吗?@chrislovecnm作业称为第三方web服务。它们的速度很慢,同一个web服务的并行执行会产生性能问题。但是非常感谢,不同的SchedulerFactoryBeans似乎会有所帮助!