简单总结就是:如果定时任务执行过程中遇到发生异常,则后面的任务将不再执行。
我们可以做个实验验证一下:
先看下面一段代码:
/**
* [Copyright]
* @author QiFuguang
* Aug 25, 2014 9:48:41 PM
*/
package com.winwill.xx;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
publicclassTest{
privatefinalstaticScheduledExecutorService scheduler =Executors.newSingleThreadScheduledExecutor();
publicstaticvoid main(String[] args){
scheduler.scheduleAtFixedRate(newRunnable(){
@Override
publicvoid run(){
int[] s =newint[1];
System.out.println("OK");
System.out.println(s[1]);// 数组越界
}
},0,2,TimeUnit.SECONDS);
}
}
再看如下代码:
/**
* [Copyright]
* @author QiFuguang
* Aug 25, 2014 9:48:41 PM
*/
package com.winwill.xx;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
publicclassTest{
privatefinalstaticScheduledExecutorService scheduler =Executors.newSingleThreadScheduledExecutor();
publicstaticvoid main(String[] args){
scheduler.scheduleAtFixedRate(newRunnable(){
@Override
publicvoid run(){
try{
int[] s =newint[1];
System.out.println("OK");
System.out.println(s[1]);// 数组越界
}catch(Throwable t){
System.out.println("Error");
}
}
},0,2,TimeUnit.SECONDS);
}
}