java exception 二次抛出_java – 如何在scheduleWithFixedDelay抛出异常时重新启动计划?...
你可能應(yīng)該在一個(gè)while(true)循環(huán)中包含try塊,因?yàn)槿绻谝淮芜\(yùn)行沒有拋出異常,你將退出你的方法,如果第二次調(diào)用拋出一個(gè),你將無法捕獲它.
我還會在自己的線程中運(yùn)行遞歸調(diào)用,以避免在事情變壞時(shí)出現(xiàn)StackOverFlow錯(cuò)誤的風(fēng)險(xiǎn).
所以它看起來像這樣:
private void startMemoryUpdateSchedule(final ScheduledExecutorService service) {
final ScheduledFuture> future = service.scheduleWithFixedDelay(new MemoryUpdateThread(), 1, UPDATE_MEMORY_SCHEDULE, TimeUnit.MINUTES);
Runnable watchdog = new Runnable() {
@Override
public void run() {
while (true) {
try {
future.get();
} catch (ExecutionException e) {
//handle it
startMemoryUpdateSchedule(service);
return;
} catch (InterruptedException e) {
//handle it
return;
}
}
}
};
new Thread(watchdog).start();
}
總結(jié)
以上是生活随笔為你收集整理的java exception 二次抛出_java – 如何在scheduleWithFixedDelay抛出异常时重新启动计划?...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 暗黑3彩虹关怎么进 暗黑3彩虹关材料收集
- 下一篇: JAVA vector的遍历_谈谈vec