[英]Java ScheduledThreadPool multithreads stops after some time
我正在開發一個 J2SE 應用程序,它可以同步存儲在不同服務器上的四個數據庫中的 184 輛汽車的 GPS 信息。 我為每輛車創建一個線程並存儲在 ScheduledThreadPool
ScheduledExecutorService executor = Executors.newScheduledThreadPool(20);
for (int i = 0; i < cars.size(); i++) {
Car vec_temp = cars.get(i);
SyncThread carThread = new SyncThread(q, vec_temp, reintentos);
long sleep = carThread.calculateVehicleDelay();
executor.scheduleAtFixedRate(hilo, 0, sleep, MILLISECONDS);
}
緯度和經度信息由 XML 數據中的 SocketServer 檢索,因此在 SyncThread Class 中,我實例化了一個 Socket 並詢問信息並關閉該連接,並每 15 分鍾進行一次...
該應用程序由於某種原因開始運行良好,有時會停止運行,沒有異常......
jar 作為 windows 服務運行。
根據API ,
如果任務的任何執行遇到異常,則后續執行將被抑制。
話雖如此,如果您將代碼發布在SyncThread
中會很好,否則幾乎不可能為您提供幫助。 另外,什么是hilo
? 為什么要安排執行hilo
而不是carThread
?
嘗試在 Runnable 實現中放置一個 try-catch 塊。 想法是抑制任何異常被拋出給執行者。 理想情況下,如果您可以在 catch 塊中記錄此事件並避免將其丟棄,那么您的應用程序應該可以按預期工作,並且您將能夠確定之后發生的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.