Java在终止之前等待所有线程

时间:2014-02-26 11:14:52

标签: java multithreading jmeter load-testing

我正在尝试使用Jmeter测试应用程序。该应用程序使用专有库创建多个线程。在JMeter中,我创建了一个AbstractJavaSamplerClient,它似乎不等待可能在应用程序中生成的所有其他线程。相反,它只是运行自己的默认方法并关闭让其他线程在后台运行 - 因为我连接到应用程序中的服务器,我可以通过服务器日志看到它仍然连接。由于我没有通过专有库实例化其他线程的引用,我不能使用wait()或join()的常见解决方案。如何让主线程等待所有的线程(我也没有参考)?

2 个答案:

答案 0 :(得分:3)

将库的所有工作放在专门创建的线程组中的单独线程中。该库将在该线程组及其后代中创建新线程。使用group.enumerate(new Thread[group.activeCount()*2],true)以递归方式列出该组的所有主题。然后你可以加入()他们所有。

答案 1 :(得分:1)

你可以从

开始
Thread.getAllStackTraces().keySet();

将为您提供一组所有正在运行的线程。这将包括您对所有其他线程感兴趣的那些线程,包括JVM内部的线程。

希望您能够按名称过滤出您感兴趣的内容,然后您可以join()