Javadoc как scheduleAtFixedRate
, так и scheduleWithFixedDelay
говорит: «Если какое-либо выполнение задачи встречает исключение, последующие выполнения подавляются». Я не нахожу это совершенно кристально чистым, но, похоже, говорится, что если ваш метод run
выдает какие-либо исключения, то планировщик будет эффективно отбрасывать эту задачу. Любые другие задачи, выполняемые через этот планировщик, не должны быть затронуты. Не должно быть трудно проверить, что он на самом деле делает ...
Отмена задания не обязательно может быть плохой вещью. Если метод run выдает RuntimeException
, возможно, где-то произошла ошибка, и состояние системы неизвестно. Но как минимум я бы посоветовал перехватить RuntimeException
в вашем методе run и записать полную трассировку стека в SEVERE. Вы можете затем повторно бросить, чтобы отменить задачу, в зависимости от обстоятельств. Но в любом случае вам понадобится вести лесозаготовку, чтобы иметь шанс с боем разобраться, что пошло не так.