我每隔2分钟到FTP上传新文件。 我用java.util.Timer实现了它。但经过一段时间 - 几天甚至一周 - 它会毫无例外地停止而且没有任何理由。
我找到了帖子: Java unlimited thread stops after some time
但是没有特别的解决方案。 我读到了ScheduledExecutorService,但据我所知 - 它和Timer一样。
请给我一些想法!
答案 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?