如下代码创建的每3秒执行一次的定时任务,任务内报错的话会导致任务卡住,然后定时任务好像就挂掉了,后面不再执行,有什么办法即使某次任务出错或超时,下一次仍然继续执行么?最好是能将出错的进程关闭并释放资源,不影响性能。
public class ThreadPoolTest {
public static int k = 0;
public static void main(String[] args) {
ScheduledThreadPoolExecutor threadPoolExecutor = new ScheduledThreadPoolExecutor(3);
threadPoolExecutor.scheduleWithFixedDelay(new Runnable() {
@Override
public void run() {
k++;
for (int i = 0; i < 4; i++) {
System.out.println("执行线程:" + k + "-" + i);
try {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
}
int m = 4 / (k - 3);
}
}, 0, 3000, TimeUnit.MILLISECONDS);
}
}
应该是任务处理时间不够,可以考虑加入同步技术试试。