我有一個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'類的代碼片段將是有益的。 –