Эта проблема может возникать, когда необработанное исключение возникает в ErrorHandler. Я не уверен насчет специфики, однако исключение времени выполнения, выдаваемое ErrorHandler (или методом внутри него), которое распространяется вне его, в основном убивает запланированный поток для этой задачи. Кроме того, НИЧЕГО не записывается в журналы (нет сообщений об исключениях, нада).
Самый простой способ решить эту проблему - обернуть весь метод в блок try / catch, перехватывающий исключение - хотя в зависимости от почему у вас есть такой обработчик ошибок, который может быть плохая идея. Это не решает основной проблемы под рукой, но поддерживает поток живой и позволяет регистрировать проблему.
Пример:
public class MyErrorHandler implements ErrorHandler {
@Override
public void handleError(Throwable t) {
try {
//handle intended exception (ex. write to database or logs)
} catch (Exception e) {
//handle exception that was thrown while trying to handle the intended exception.
}
}