3

我每 2 分钟去一次 FTP 上传新文件。我用 java.util.Timer 实现了它。但过了一段时间——几天甚至一周——它毫无例外地停止了,也没有任何理由。

我找到了线程: Java无限线程在一段时间后停止

但是里面并没有什么特别的解决办法。我阅读了有关 ScheduledExecutorService 的信息,但据我所知 - 它与 Timer 相同。

请给我一些想法!

4

2 回答 2

0

您可以尝试Thread.setDefaultUncaughtExceptionHandler()在主线程中使用 API 设置默认异常处理程序,并尝试记录任何可能被默默吞下的可抛出/异常。

于 2013-02-01T13:34:56.317 回答
0

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

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

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

有关更多详细信息,请参阅 -如果时钟发生变化,Timertask.scheduleAtFixedRate 应该做什么?

于 2014-10-09T13:02:41.953 回答