【发布时间】:2010-08-29 20:48:50
【问题描述】:
我有一个网络服务器和一些数据存储类型的服务器。我需要的是两台服务器之间的同步。 Web 服务器始终处于运行状态,我尽量让数据服务器保持运行状态。
两者都有 MySQL 数据库,我已经编写了脚本来同步它们。我制作了一个 java 程序,它每 10 秒从 Web 服务器获取新的数据字段并将它们存储在自己的数据库中。一个无限制的 java 线程可以做到这一点。这将是执行此操作的代码:
Timer timer;
Date current_date = new Date() ;
timer = new Timer();
timer.scheduleAtFixedRate(new doCheck(), current_date, 10 * 1000);
doCheck() 类的构造函数以 XML 格式从 Web 服务器获取数据。没有 mysql 直接连接 b/w 服务器。
真正的问题:
但是当这个脚本 24/7 运行时,在几天后的一段时间后,脚本(基本上是一个从 Web 服务器获取 XML 的线程)突然停止运行并且同步完全断开。
可能性#1:互联网断开连接:我尝试拔下网线,但它开始出现异常,但当我重新连接网线后,它开始正常工作。
可能性 #2:代码中的任何异常等:我正在维护日志,但大多数情况下它会突然停止而没有异常或错误。
可能性#3:手动取消线程:没有人接触服务器 :P 并且只有一个按钮可以取消它,所以这是不可能的。
为什么会这样?我只想让这个脚本无限次运行。
【问题讨论】:
-
假设你的意思是 doCheck() 的 run() 方法执行操作,而不是它的构造函数?
标签: java multithreading timer