0

我想从我自己的 main() 运行一个 JAR 文件。假设我有一个 A 类,它有一个main()方法。A的方法将在另一个文件 B.jar 中main()运行一个新方法。main()这就是我从 A.jar 的main()方法运行 B.jar 文件的方式:here

问题是我无权访问 B.jar Java 源代码。main()我需要知道的是 B.jar方法中有多少线程正在运行。

这里有另一个关于获取在 Java 应用程序中运行的所有线程列表的讨论。

现在我需要的是由 B.jar 生成的线程列表。或者至少是一个线程 ID 数组。

4

3 回答 3

0

该方法Thread.activeCount()将为您提供当前ThreadGroup. 如果外部 jar 中的线程没有定义新的线程组,则默认情况下运行时会将这些线程与调用线程(即您的线程)放在同一组中。您可以在执行 jar 之前和之后调用此方法,看看它有多少变化。

更新 - 如果您还想知道新 jar 生成了哪些线程,请Thread.enumerate在之前和之后使用 过滤两个数组中的线程。剩下的线程应该是 jar 文件中的类创建的线程。

于 2012-10-14T14:40:37.377 回答
0

保持root/parentJARB进程的线程。在任何时候,使用这个root/parentactiveCount()获取您B创建的线程数。

于 2012-10-14T15:24:30.107 回答
0

如果您根据链接到的引用在单独的进程中运行 B.jar,则它的线程在该进程中,而不是在这个进程中,并且您无法访问它们。如果出于某种(奇怪的)原因需要访问线程,则必须(查找并)直接在当前 JVM 中运行 B.jar 的 main() 方法。

于 2012-10-14T23:53:03.313 回答