java.util.Timer останавливается без каких-либо исключений
Я захожу на FTP каждые 2 минуты, чтобы загрузить новые файлы. Я реализовал это с помощью java.util.Timer. Но через некоторое время - несколько дней или даже недель - он прекращается без каких-либо исключений и без причины.
Я нашел поток: Java неограниченный поток останавливается через некоторое время
Но в этом нет особого решения. Я читал о ScheduledExecutorService, но, насколько я понимаю, - это так же, как Timer.
Пожалуйста, дайте мне несколько идей!
2 ответа
Я только что видел, что никто не ответил на этот вопрос, возможно, потому что это дубликат.
ScheduledExecutorService использует System.nanotime()
и Java.util.Timer использует System.currentTimeMillis()
,
System.currentTimeMillis()
зависит от системного времени и System.nanotime()
дает наносекунды с некоторого фиксированного произвольного начального времени и не относится к системному времени. Таким образом, любое изменение системного времени (из-за коррекции времени NTP или ожидания системы) может повлиять или не повлиять на выполнение таймера. Это может стать причиной сбоя вашего таймера.
Для более подробной информации, пожалуйста, обратитесь - Что должен делать Timertask.scheduleAtFixedRate, если часы меняются?
Вы можете попробовать установить обработчик исключений по умолчанию, используя Thread.setDefaultUncaughtExceptionHandler()
API в вашем основном потоке и попробуйте записать любое бросаемое / исключение, которое можно было бы молча проглотить.