簡體   English   中英

Java ScheduledThreadPool 多線程在一段時間后停止

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM