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 в вашем основном потоке и попробуйте записать любое бросаемое / исключение, которое можно было бы молча проглотить.

Другие вопросы по тегам