我每 2 分钟去一次 FTP 上传新文件。我用 java.util.Timer 实现了它。但过了一段时间——几天甚至一周——它毫无例外地停止了,也没有任何理由。
我找到了线程: Java无限线程在一段时间后停止
但是里面并没有什么特别的解决办法。我阅读了有关 ScheduledExecutorService 的信息,但据我所知 - 它与 Timer 相同。
请给我一些想法!
我每 2 分钟去一次 FTP 上传新文件。我用 java.util.Timer 实现了它。但过了一段时间——几天甚至一周——它毫无例外地停止了,也没有任何理由。
我找到了线程: Java无限线程在一段时间后停止
但是里面并没有什么特别的解决办法。我阅读了有关 ScheduledExecutorService 的信息,但据我所知 - 它与 Timer 相同。
请给我一些想法!
您可以尝试Thread.setDefaultUncaughtExceptionHandler()
在主线程中使用 API 设置默认异常处理程序,并尝试记录任何可能被默默吞下的可抛出/异常。
我刚刚看到没有人回答这个问题,可能是因为这是重复的。
ScheduledExecutorService 使用System.nanotime()
,Java.util.Timer 使用System.currentTimeMillis()
.
System.currentTimeMillis()
取决于系统时间并System.nanotime()
给出纳秒,因为一些固定的任意初始时间与系统时间无关。因此,系统时间的任何变化(由于 NTP 时间校正或系统待机)可能会也可能不会影响 Timer 的执行。这将是您的计时器失败的原因。
有关更多详细信息,请参阅 -如果时钟发生变化,Timertask.scheduleAtFixedRate 应该做什么?