2013-02-01 1 views
2

Je vais au FTP chaque 2 minutes pour télécharger de nouveaux fichiers. Je l'ai implémenté avec java.util.Timer. Mais après un certain temps - plusieurs jours ou même une semaine - il s'arrête sans aucune exception et sans aucune raison.java.util.Timer s'arrête sans aucune exception

J'ai trouvé fil: Java unlimited thread stops after some time

Mais il n'y a pas de solution particulière en elle. Je lis à propos de ScheduledExecutorService, mais pour autant que je comprends - c'est la même chose que Timer.

S'il vous plaît donnez-moi quelques idées!

+1

minuteries fonctionnent sur un fil sparate. Si une exception se produit, le thread s'arrête. attraper tous les throwables dans run() ou une méthode similaire, et l'afficher dans le journal. – AlexWien

Répondre

0

Vous pouvez essayer de définir un gestionnaire par défaut d'exception en utilisant Thread.setDefaultUncaughtExceptionHandler() API dans votre thread principal et essayez de vous connecter une throwable/exception qui pourrait s'avaler en silence.

0

Je viens de voir que personne n'a répondu à cette question, peut-être parce que c'est un doublon. Le service ScheduledExecutorService utilise System.nanotime() et Java.util.Timer utilise System.currentTimeMillis().

System.currentTimeMillis() dépend de l'heure du système et System.nanotime() donne des nanosecondes depuis un certain temps initial arbitraire fixe et n'est pas liée à l'heure du système. Ainsi, tout changement dans l'heure du système (dû à la correction de temps NTP ou à la mise en veille du système) peut avoir ou non un impact sur l'exécution du temporisateur. Ce serait la raison pour laquelle votre minuteur échoue.

Pour plus de détails s'il vous plaît réfé - What should Timertask.scheduleAtFixedRate do if the clock changes?

Questions connexes