请问一下有一个定时任务Task每3秒钟执行一次,在这个定时任务的for循环里创建A,每次开启一个线程将A丢进去,A继承Runnable接口,run方法运行10s
<bean id="timerATask" class="xxxxxx.A"></bean>
<task:scheduled-tasks>
<task:scheduled ref="timerATask" method="task" cron="*/3 * * * * ?"/>
</task:scheduled-tasks>
有两个问题
1.每次循环是不是taskExecutor.execute(t1);
执行完就会执行下一次for循环,和新开启线程内的run方法是否被执行结束没关系吧
2.for循环1000次执行完成后,但是run方法中的执行时间为10s是超过3s的没有执行完,定时任务到3s的时候还会继续执行吗,还是说等所有run方法结束后等3s才执行
public class Task {
private static Logger logger = LoggerFactory.getLogger(Task.class);
@Resource(name = "taskExecutor")
private TaskExecutor taskExecutor;
public void task() {
logger.info("==========开始执行定时任务==========");
for (int x = 0; x < 1000; x++) {
try {
A a = new A(x);
Thread t1 = new Thread(a);
taskExecutor.execute(t1);
} catch (Exception e) {
}
}
}
public class A implements Runnable {
private int x;
public void run() {
System.out.println(this.x);
/* 逻辑处理执行时间10s */
}
public A(int x) {
this.x = x;
}
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…