1

我正在开发一个 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 类中,我实例化了一个 Socket 并询问信息并关闭该连接,并每 15 分钟进行一次......

该应用程序由于某种原因开始运行良好,有时会停止运行,没有异常......

jar 作为 Windows 服务运行。

4

2 回答 2

3

根据API

如果任务的任何执行遇到异常,则后续执行将被抑制。

话虽如此,如果您将代码发布在里面会很好SyncThread,否则几乎不可能帮助您。还有,是什么hilo?你为什么要安排hilo执行,而不是carThread

于 2011-05-27T22:55:36.580 回答
1

尝试在 Runnable 实现中放置一个 try-catch 块。想法是抑制任何异常被抛出给执行者。理想情况下,如果您可以在 catch 块中记录此事件并避免将其丢弃,那么您的应用程序应该可以按预期工作,并且您将能够确定之后发生的事情。

于 2011-05-28T06:50:06.003 回答