如何确定应用程序何时启动使用java反射已完成

时间:2009-06-26 13:57:19

标签: java reflection

我有一个Java程序,它使用反射来查找和调用另一个Java程序的main(String [] args)方法。这个其他程序通常是一个Swing应用程序,往往会产生自己的线程。我想知道是否有办法确定其他“程序”何时终止。我不确定是否有检测到这个,因为它在与宿主程序相同的空间中执行。目前的方法只是检查是否有任何打开的框架不是我们自己的框架,而不是最好的解决方案。在我们访问它的过程中运行子程序也不是一个真正的选择。

编辑:看起来答案是双重方法。首先创建一个ThreadGroup并在作为该组成员的线程中启动子程序。然后确保检查Frame.getFrames()是否有任何帧属于子。

谢谢你,   --Sandro

2 个答案:

答案 0 :(得分:1)

在单独的ThreadGroup中启动子应用程序(可能最好将其设置为守护程序线程组)并定期检查它是否包含任何正在运行的线程或子组。

答案 1 :(得分:0)

如果你有办法发现这个子应用程序正在使用的窗口,你只需附加相应的Window监听器并等待所有关闭事件。

修改:

使用事件侦听器方法至少可以让您不经常循环和查询帧。 对于衍生线程的情况,我不知道。如果有一种方法可以跟踪自己的线程并发现应用程序的线程,则可以执行与帧相同的循环。

编辑2:

我想到的是自己使用JMX获取线程和其他信息,但我不太了解JMX。