java timer定时执行,一段时间后,就不再执行了

小雨0oo 发布于 2014/07/09 09:39
阅读 8K+
收藏 2

java timer定时执行,发现一个问题,就是执行一段时间后,就不再执行了。这是什么原因?


timer = new Timer(true);
timer.schedule(new SyncOrderTask(), 0, 600*1000); 


大概6个小时左右,就不再定时执行了

加载中
0
布谷鸟
布谷鸟

检查你SyncOrderTask中的代码可能会出现异常的地方,

Timer在周期调度任务的过程中如果出现未捕获异常会终止掉整个Timer线程,看哪些地方可能会出现问题,找到后try..catch下

对待此类需求,我现在用ScheduledThreadPoolExecutor来代替了

铂金小虫
铂金小虫
如果有异常,用ScheduledThreadPoolExecutor还是不会继续执行的,只不过因为线程池的存在,程序不会结束。Timer和ScheduleExecutorService的区别在于一个单线程一个多线程。
0
狐狸糊涂
狐狸糊涂

Timer.schedul(TimerTask, delay)只会执行一次。你需要的是Timer.scheduleAtFixedRate(...)或者是 ScheduledExecutorService。

不过需要注意的是,对于这种循环调度的任务需要处理好Exception,防止出错后就不再调度。

返回顶部
顶部