Java获取调用main创建的线程

标签 java multithreading unit-testing junit client-server

我有一个客户端服务器应用程序,出于测试目的,我需要通过调用以测试方法启动客户端

Client.main();

这会创建一些新线程。现在我需要等到该线程完成后才能在我的测试中执行断言。我怎么知道这种情况何时发生?或者,我怎么知道调用启动了哪个线程(客户端也可以创建其他线程)。

最佳答案

以编程方式调用main 不会自行启动新线程。只有当 main 方法具有显式启动新线程的代码时才会发生这种情况。如果是这种情况,您应该更改 Client 以某种形式提供对该线程的访问,这样您就可以对其调用 join()。 (调用 Thread.join() 是等待线程完成的标准方法。)

Client.main() 是否执行除启动新线程之外的任何任务?否则,您的测试可能更简单,只需调用新线程将结束运行的任何 run() 方法,并尽可能使测试成为单线程。

关于Java获取调用main创建的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3716066/

相关文章:

java - 为什么我有不兼容的类型?

python - 模拟在被测方法中实例化的 Python 类

unit-testing - 有没有人成功地使用 Jboss 嵌入式、Seam 和 Maven 运行集成测试?

c# - 如果错误记录在脚本中,PlayMode 测试默认停止

java - 使用 Spring Boot 将 zip 文件从应用程序资源文件夹复制到目标

java - 如何删除 json 格式中的特殊字符

java - 当 PipedReader 与 PipedWriter 位于不同线程时,如何将它们连接起来?

python - 何时使用线程以及使用多少线程

c++ - C++/QT 中的线程多核平台独立编程

java - 使用google guice实现MVC观察者模式