我有一个客户端服务器应用程序,出于测试目的,我需要通过调用以测试方法启动客户端
Client.main();
这会创建一些新线程。现在我需要等到该线程完成后才能在我的测试中执行断言。我怎么知道这种情况何时发生?或者,我怎么知道调用启动了哪个线程(客户端也可以创建其他线程)。
最佳答案
以编程方式调用main
不会自行启动新线程。只有当 main
方法具有显式启动新线程的代码时才会发生这种情况。如果是这种情况,您应该更改 Client
以某种形式提供对该线程的访问,这样您就可以对其调用 join()
。 (调用 Thread.join()
是等待线程完成的标准方法。)
Client.main()
是否执行除启动新线程之外的任何任务?否则,您的测试可能更简单,只需调用新线程将结束运行的任何 run()
方法,并尽可能使测试成为单线程。
关于Java获取调用main创建的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3716066/