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