Java Junit是否关闭了所有线程?

Java Junit是否关闭了所有线程?,java,multithreading,junit,Java,Multithreading,Junit,我有一个Junit类,其中包含6个测试。当第一个测试运行时,它调用另一个类中的一个方法,该类启动一个新线程()。让我们称之为MyThread 这个想法是为了在JUnit测试完成后让MyThread保持运行更长的时间 例如,对于要完成的所有JUnit测试,需要1秒,因此我将MyThread设置为运行3秒: new Thread(new Runable(){ public void run(){ System.out.println("start"); Thr

我有一个Junit类,其中包含6个测试。当第一个测试运行时,它调用另一个类中的一个方法,该类启动一个新线程()。让我们称之为MyThread

这个想法是为了在JUnit测试完成后让MyThread保持运行更长的时间

例如,对于要完成的所有JUnit测试,需要1秒,因此我将
MyThread
设置为运行3秒:

new Thread(new Runable(){
    public void run(){
        System.out.println("start");
        Thread.sleep(3000);
        System.out.println("end");
    }
}).start();
标准输出上将显示
开始
,但从未显示
结束

在我看来,每当JUnit测试完成时,
MyThread
也会关闭


所以我想知道,JUnit是否关闭了它启动的所有线程?非常感谢。

这实际上不是JUnit,而是运行JUnit测试的外部系统(如Eclipse或Maven),它们负责终止JVM。这些调用System.exit停止所有线程。如果JUnit这样做了,那么外部系统将没有机会处理结果。

为了解决中给出的附加上下文,我建议这正是
@BeforeClass
@AfterClass
方法的用途


@BeforeClass
中创建(静态)DB连接,并在
@AfterClass
方法中关闭它。无需让后台方法等待其他测试完成。

OK,Context:my 6的所有测试都连接到HSQLDB进程内数据库以完成某些工作。因为我不想每次测试运行时都关闭连接,所以我让他们共享一个连接。我启动了一个线程来监视测试,当所有测试都完成时,它会关闭连接,然后关闭所有测试。但每次JUnit测试结束时,该线程都会终止