我想从我自己的main()运行一个JAR文件。假设我有一个具有main()
方法的A类。 A的main()
方法将在另一个文件B.jar中运行新的main()
方法。
这就是我从A.jar的main()
方法运行B.jar文件的方法:here。
问题在于我无法访问B.jar Java源代码。我需要知道的是B.jar main()
方法中运行了多少个线程。
此处还有另一个关于获取在Java应用程序here中运行的所有线程列表的讨论。
现在我需要的是B.jar产生的线程列表。或者至少是一个线程ID数组。
答案 0 :(得分:0)
方法Thread.activeCount()
将为您提供当前ThreadGroup
中的线程数。如果外部jar中的线程没有定义新的线程组,那么默认情况下运行时将把这些线程放在与调用线程(即你的线程)相同的组中。您可以在执行jar之前和之后调用此方法,并查看它的更改量。
更新 - 如果您还想知道新jar生成了哪些线程,请在前后使用Thread.enumerate
,筛选两个阵列中的线程。其余的线程应该是jar文件中的类创建的。
答案 1 :(得分:0)
保持JAR root/parent
进程的B
主题。您可以随时使用此root/parent
。activeCount()
来计算B
创建的主题。
答案 2 :(得分:0)
如果你按照你链接的引用在一个单独的进程中运行B.jar,它的线程就在那个进程中,而不是这个进程,你无权访问它们。如果由于某些(奇怪的)原因需要访问线程,则必须(找到并)直接在当前JVM中运行B.jar的main()方法。