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来处理。
------解决思路----------------------
楼上说的差不多