我想用Jmeter來測試應用程序。該應用程序使用創建多個線程的專有庫。在JMeter中,我創建了一個AbstractJavaSamplerClient,它似乎並未等待應用程序中可能生成的所有其他線程。相反,它只是運行自己的默認方法,並關閉其他線程在後臺運行 - 因爲我正在連接到應用程序中的服務器,所以我可以通過服務器日誌查看它是否仍處於連接狀態。由於我沒有對其他線程的引用,因爲它們是通過專有庫實例化的,所以我不能使用wait()或join()的通用解決方案。我怎樣才能讓主線程等待所有的線程(我也沒有參考)?Java在終止之前等待所有線程
1
A
回答
3
將所有使用庫的工作都放在專門創建的線程組的單獨線程中。該庫將在該線程組及其後代中創建新線程。用group.enumerate(new Thread[group.activeCount()*2],true)
遞歸列出該組的所有線程。然後你可以加入()他們所有。
1
您可以
Thread.getAllStackTraces().keySet();
啓動,這將給你一個集所有運行的線程。這將包括您對和感興趣的所有其他線程,包括JVM內部的那些線程。
希望你能夠通過名稱篩選出你感興趣的人,然後你可以join()
他們。
+0
感謝您的解決方案。但是,我繼續與阿列克謝的解決方案。 –
+0
是的,這是一個更清潔的解決方案。 –
相關問題
- 1. .NET應用程序在終止程序之前是否等待所有前景線程完成?
- 2. Java:如何讓這個主線程等待新線程終止
- 3. 未來等待FixedThreadPool在所有線程完成之前返回
- 4. java等待池中的所有線程
- 5. 爲什麼線程在加載所有數據之前終止?
- 6. 確保所有線程在JVM完全終止之前完成
- 7. 如何等待所有孩子在父母離開之前終止?
- 8. 終止終止所有線程
- 9. TIdCommandHandler:OnCommand等待終止
- 10. 在收到SIGINT或SIGTERM後關閉服務器之前線程的等待終止工作(C中Posix線程)
- 11. 在當前正在執行的線程死亡之前等待
- 12. C#等到所有線程在ThreadPool中終止
- 13. 終止Java線程
- 14. Java線程終止
- 15. Java - 終止線程
- 16. 在循環中創建線程並等待所有線程完成/中止
- 17. Java如何在繼續之前等待
- 18. 在Java內返回之前等待
- 19. 如何等待所有線程完成
- 20. C#等待所有線程完成Main()
- 21. 等待C++中的所有線程
- 22. 試圖等待所有線程完成
- 23. 等待所有工作線程結束
- 24. C++等待所有線程完成
- 25. 如何等待所有線程完成?
- 26. 線程池等待所有64 [Leadtools]
- 27. 等待所有ajax調用終止在硒webdriverjs
- 28. 程序在讀取所有結構成員之前終止
- 29. Java Worker線程等待
- 30. Java線程等待值
使用'activeCount()* 2'的「訣竅」很好,但要正確,必須檢查枚舉的返回值是否嚴格小於給定長度(嚴格來說,如果它的大小完全相同,區分尺寸太小的情況與完全吻合的情況)。是的,這是一個尷尬的API使用。 – Voo
謝謝工作得很好! –