2010-04-05 141 views
1

我在RHEL OS中的1.5 Java VM中运行J2SE应用程序。该应用程序的任务之一是在启动过程中创建3个无限运行的用户线程。目的是检查后端数据库表中特定类型的请求并执行相应的操作。Java线程突然停止运行

正如我们观察到,长期运行的线程突然停止运行,但仍是应用还活着,JVM过程可以看出,在PS英法| grep的java的

能有人扔为什么被创建的线程光以无限循环运行,突然停止?关于如何检测这个问题和可能的解决方案的任何想法都会有很大的帮助

与问候, 克里希纳

+0

这听起来像是死锁的经典描述 – 2010-04-05 15:52:05

回答

5

我建议发送Ctrl+Break到您的应用程序,倾倒螺纹和分析输出。也许你的线程正在等待一些输入(IO)。也许他们僵持不下。也许他们已经退出了一个未捕获的异常。线程转储会告诉你发生了什么事(如果你事先命名你的线程,这可以帮助你在转储中识别它们)。

+0

线程转储绝对是解决这类问题的方法。不知道你的线程是什么?转储他们的状态。分析他们是否都在等待相同的锁定/被阻止在相同的位置。 – 2010-04-05 15:52:49

3

也许你有未处理的异常。

首先,您应该记录所有线程活动(您可以使用log4j来实现此目的)。

您还可以重写ThreadGroup类的uncaughtException方法,并为由于未捕获的异常而导致线程死亡时创建警报。