我正在开发一个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服务运行。
答案 0 :(得分:3)
根据API,
如果执行了任务 遇到异常,随后 执行被压制。
话虽如此,如果你在SyncThread
内发布代码会很好,否则几乎不可能帮助你。还有,hilo
是什么?为什么要安排执行hilo
,而不是carThread
?
答案 1 :(得分:1)
尝试在Runnable实现中设置try-catch块。想法是禁止任何异常被抛弃到执行者身上。理想情况下,如果您可以将此事件记录在catch块中并避免将其丢弃,那么您的应用程序应该按预期工作,并且您将能够识别之后发生的事件。