java.util.Timer停止,没有任何异常

时间:2013-02-01 12:38:18

标签: java timer scheduledexecutorservice

我每隔2分钟到FTP上传新文件。 我用java.util.Timer实现了它。但经过一段时间 - 几天甚至一周 - 它会毫无例外地停止而且没有任何理由。

我找到了帖子: Java unlimited thread stops after some time

但是没有特别的解决方案。 我读到了ScheduledExecutorService,但据我所知 - 它和Timer一样。

请给我一些想法!

2 个答案:

答案 0 :(得分:0)

您可以尝试在主线程中使用Thread.setDefaultUncaughtExceptionHandler() API设置默认的Exception处理程序,并尝试记录任何可能被静默吞噬的throwable / exception。

答案 1 :(得分:0)

我刚看到没有人回答过这个问题,也许是因为这是重复的。

ScheduledExecutorService使用System.nanotime(),Java.util.Timer使用System.currentTimeMillis()

System.currentTimeMillis()取决于系统时间,System.nanotime()给出纳秒,因为某些固定的任意初始时间与系统时间无关。因此,系统时间的任何变化(由于NTP时间校正或系统待机)可能会也可能不会影响定时器的执行。这可能是您的计时器失败的原因。

有关详细信息,请参阅 - What should Timertask.scheduleAtFixedRate do if the clock changes?