我有一个Java应用程序,它使用多个线程,这些线程在给定时间后使用ScheduledExecutorService开始。每个小时一个线程开始,做一些工作并正确终止。但有时(例如,当HTTP请求不起作用时)该线程崩溃并且执行程序服务不再启动这样的线程。然后我必须退出应用程序(使用Ctrl-C)并重新启动它。Java - 应用程序在线程崩溃后无法正常工作
崩溃线程是否可能中断ExecutorService以实例化新线程? 我不想经常检查应用程序是否仍在运行,因为它运行在我的Raspberry Pi上,应该24/7运行。
也许你可以帮我找到我的问题的解决方案!
编辑:
的的ExecutorService也运行在自己的线程。这是怎样的线程启动:
@Override
public void run() {
threadFuture = executorService.scheduleAtFixedRate(new IntervalThread(i, p, c, a), 60, 60, TimeUnit.MINUTES);
}
这是被称为每60分钟线:如果线程(这使得HTTP请求)chrashed
@Override
public void run() {
try {
// do some HTTP request here
// if an error occurs, catch it and log the error message
} catch (Exception e) {
LOGGER.error(e.getMessage());
}
}
,整个ExecutorService的不再工作了。如果我发现每一个异常,怎么可能呢?
了'ExecutorService'初始化和你的'Runnable'类的代码片段将是有益的。 –