Java ScheduledThreadPool多线程在一段时间后停止

时间:2011-05-27 22:46:31

标签: java multithreading scheduling executorservice

我正在开发一个J2SE应用程序,用于同步存储在不同服务器上的四个数据库中的184辆汽车的GPS信息。对于每辆汽车,我创建一个Thread并存储在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);
    }

纬度和经度的信息由SocketServer在XML数据中检索,因此在SyncThread类中我实例化一个Socket并询问信息并关闭该连接,并每隔15分钟进行一次......

由于某种原因,应用程序因某些原因停止运行而没有异常......

jar正在作为Windows服务运行。

2 个答案:

答案 0 :(得分:3)

根据API

  

如果执行了任务   遇到异常,随后   执行被压制。

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

答案 1 :(得分:1)

尝试在Runnable实现中设置try-catch块。想法是禁止任何异常被抛弃到执行者身上。理想情况下,如果您可以将此事件记录在catch块中并避免将其丢弃,那么您的应用程序应该按预期工作,并且您将能够识别之后发生的事件。