Multithreading JUnit线程测试

Multithreading JUnit线程测试,multithreading,unit-testing,junit,Multithreading,Unit Testing,Junit,我的应用程序中有客户端和服务器线程。当我将这些应用程序作为独立应用程序运行时,这些线程可以正常通信 但当我以JUnit的形式运行客户机,以独立的方式运行服务器时,客户机线程会在几秒钟内死亡 我无法理解为什么会有如此不同的行为。当JUnit运行程序终止时,所有生成的线程等也会被杀死(因为它很可能在单独的JVM实例中运行) 这里有一个(相当古老的)(它推荐的格罗布提尔图书馆似乎很久以前就被废弃了)。而且,使用新的Java并发框架的更现代的解决方案 后一种解决方案的要点是,它通过执行器运行线程,执行器

我的应用程序中有客户端和服务器线程。当我将这些应用程序作为独立应用程序运行时,这些线程可以正常通信

但当我以JUnit的形式运行客户机,以独立的方式运行服务器时,客户机线程会在几秒钟内死亡


我无法理解为什么会有如此不同的行为。

当JUnit运行程序终止时,所有生成的线程等也会被杀死(因为它很可能在单独的JVM实例中运行)

这里有一个(相当古老的)(它推荐的格罗布提尔图书馆似乎很久以前就被废弃了)。而且,使用新的Java并发框架的更现代的解决方案


后一种解决方案的要点是,它通过执行器运行线程,执行器通过
Future
s发布运行结果。而
Future.get
会一直阻塞,直到线程完成任务,从而自动保持JUnit测试的活动状态。您可以根据自己的情况调整此技巧。

线程死亡时是否有异常?无异常…:(奇怪的是,这和独立应用程序的工作原理是一样的。线程究竟是如何“死亡”的?你怎么知道的?我正在Eclipse中运行这个。一两秒钟后,我成功地运行了JUnit,我可以在Eclipse控制台上看到进程结束。是的,我猜的是一样的,但是我怎么才能实现我想要的呢?谢谢你的回答:)嘿,彼得,你完全正确。运行线程终止了所有繁殖线程。我刚刚把50秒的睡眠时间放在一个测试块中,我也得到了其余的回答:)谢谢:)谢谢彼得:)再次感谢:)