上一篇简单的使用了一下quartz,然而在实际开发中可能存在n多种情况,针对可能出现的问题进行了测试。
1、一秒执行一次,执行10次,那么当一次的执行时间是大于一秒的时候会出现什么状况?
测试如下:在QuartzJobFactory类的重写方法中加入线程的阻塞,模拟实际执行一次的的时间大于一秒的情况。
public void execute(JobExecutionContext context) throws JobExecutionException {
long start = System.currentTimeMillis();
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("等待:"+(System.currentTimeMillis()-start)+"毫秒");

本文详细测试了Quartz在不同场景下的执行行为:1) 当任务执行时间超过预定间隔时,Quartz仍并发执行;2) 通过实现StatefulJob或@DisallowConcurrentExecution确保任务顺序执行;3) 同一有状态任务执行多个实例时,彼此不干扰;4) 同一触发器执行不同任务,互不影响;5) 同一任务由两个触发器触发,也互不干扰。测试揭示了Quartz在并发控制和任务隔离方面的特性。
755

被折叠的 条评论
为什么被折叠?



