spring默认分配10个线程,当分钟级别的定时任务执行时间超过一分钟时,第二个分钟定时任务也会创建第二个线程开始启动,当10个线程的任务都满了时就不再分配线程,定时任务就会因为无线程可用而一直等待线程释放,定时任务也会不再执行知道有线程被释放
解决办法有2个:
1.设置spring更大的线程数(指标不治本)
2.在定时任务中添加限制:
private boolean running ;
public void execute() throws Exception {
try {
if(running){//当上一个定时任务还未完成时先停止执行下一个
logger.info("running of update store service");
return ;
}
running = true;
//定时任务内容
} catch (Exception e) {
e.printStackTrace();
}finally {
running = false;//当前定时任务执行完毕设置false作为标记
}
}



