我的多线程应用程序有一个创建多个线程的主类。主类在启动一些线程后将等待。我创建的可运行类将通过调用 Web 服务获取文件列表、获取文件和删除文件。线程完成后,它将通知主类再次运行。我的问题是它可以工作一段时间,但可能在一个小时左右后它会从我在日志中看到的输出中到达 run 方法的底部,就是这样。Java 进程仍在运行,但根据我在日志中查看的内容,它没有做任何事情。
主要类方法:
主要方法
while (true) {
// Removed the code here, it was just calling a web service to get a list of companies
// Removed code here was creating the threads and calling the start method for threads
mainClassInstance.waitMainClass();
}
public final synchronized void waitMainClass() throws Exception {
// synchronized (this) {
this.wait();
// }
}
public final synchronized void notifyMainClass() throws Exception {
// synchronized (this) {
this.notify();
// }
}
我最初对实例进行了同步,但将其更改为方法。Web 服务日志或客户端日志中也没有记录错误。我的假设是我等待并通知错误,或者我错过了一些信息。
可运行线程代码:
在运行方法结束时
// This is a class member variable in the runnable thread class
mainClassInstance.notifyMainClass();
我之所以进行等待和通知过程是因为我不希望主类运行,除非需要创建另一个线程。
主类的目的是产生线程。该类有一个无限循环来永远运行创建和完成线程。
无限循环的目的是不断更新公司列表。