当前位置: 代码迷 >> Java Web开发 >> 关于spring定时任务怎么并行执行
  详细解决方案

关于spring定时任务怎么并行执行

热度:43   发布时间:2016-04-13 22:40:59.0
关于spring定时任务如何并行执行

package bit.ts.service;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

@Service
@Component
public class TestCron {

@Scheduled(cron="* * * * * *")
public void job1() throws InterruptedException{
for (int i = 0; i < 10 ;i++) {
System.out.print(i);
Thread.sleep(2000);
System.out.print(" ");
}
System.out.println();
}

@Scheduled(cron="* * * * * *")
public void job2() throws InterruptedException{
for (int i = 100; i < 110 ;i++) {
System.out.print(i);
System.out.print(" ");
Thread.sleep(2000);
}
System.out.println();
}
}




两个为何不并行执行,每个job都是等待上个执行完了才执行下一个job,并且job内增加线程也是无效的,有啥解决办法,让job1和job2并行执行?
------解决思路----------------------
同问,我记得之前我知道过一个配置,在这一段里面,但是不是知道在哪里配置一个参数,就可以让所有定时方法可以并行的;求高手指点。

<context:component-scan base-package="com.bestpay.billVerify">
<context:include-filter type="regex"
expression=".controller.task.*" />
<context:include-filter type="regex"
expression=".controller.service.*" />
</context:component-scan>
<task:annotation-driven/>
<context:annotation-config />
<tx:annotation-driven/>
<aop:aspectj-autoproxy/>
------解决思路----------------------
类名前加上@Scope("prototype")就行了。
scope="prototype"来保证每一个请求有一个单独的Action来处理。
------解决思路----------------------
楼上说的差不多
  相关解决方案