Я подозреваю, что исключение может привести к тому, что TimerTask перестанет работать, и в этом случае мне, скорее всего, понадобится второй timetask, чтобы контролировать, что первый все еще работает?
Обновить
Спасибо за ответы. Я унаследовал этот код, поэтому немного невежествен...
Я только что увидел, что если я создам неперехваченное исключение в своей работе, TimerThread перестанет работать навсегда.
Метод запуска TimerThread
показал, что если возникает исключение, мой запланированный поток больше никогда не запускается.
public void run() {
try {
mainLoop();
} finally {
// Someone killed this Thread, behave as if Timer cancelled
synchronized(queue) {
newTasksMayBeScheduled = false;
queue.clear(); // Eliminate obsolete references
}
}
}
Конец трассировки стека будет таким:
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
Таким образом, временное решение состоит в том, чтобы поймать ВСЕ... более долгосрочное решение состоит в том, чтобы перейти к лучшему планированию, как утверждает BalusC.
Timer
в предположительно долго работающем приложении Java EE! См. также нижнюю часть этого ответа: «как запустить метод фонового задания через фиксированные интервалы»> stackoverflow.com/questions/15787605/ - person BalusC   schedule 23.09.2013