美文网首页
junit 主线程结束之后会直接结束虚拟机

junit 主线程结束之后会直接结束虚拟机

作者: 饱饱想要的灵感 | 来源:发表于2022-09-13 18:03 被阅读0次

如下代码, 打印语句无法正常执行

    @Test
    public void executorTest() {
        ExecutorService executorService = Executors.newCachedThreadPool();
        executorService.execute(()-> {
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.printf("%s---睡了3秒钟\n", Thread.currentThread().getName());
        });
    }

可在System.exit()方法中断点, 然后会发现, junit主线程结束后直接调用了System.exit(0)

    public static void exit(int status) {
        Runtime.getRuntime().exit(status);
    }

因此, 如果多线程代码要用junit测试, 需保证主线程的执行时间比子线程长, 比如:

    @Test
    public void executorTest() throws InterruptedException {
        ExecutorService executorService = Executors.newCachedThreadPool();
        executorService.execute(()-> {
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.printf("%s---睡了3秒钟\n", Thread.currentThread().getName());
        });

        Thread.sleep(10_000);
    }

或者使用main()方法直截了当

相关文章

  • java多线程

    1.线程分用户线程和守护线程 用户线程全部结束时虚拟机和守护线程也准备即结束 守护线程代表如GC线程 2.sync...

  • 【JUnit】使用JUnit 进行多线程测试无法完成测试

    使用JUnit 进行多线程测试并发情况,但因单元测试主线程结束,其他多线程进行也会被销毁停止执行,无法完成单元测试...

  • junit 测试TCP Client 链接时崩溃

    问题:其实是Junit 测试多线程问题 普通的注解方式,当测试的内容含有多线程时,测试代码段运行结束后,其他非主动...

  • Junit 多线测试 问题

    问题 在使用Junit测试时,发现在测试方法中启动新的线程,结果新开启的线程未执行,测试方法就结束了。难道Juni...

  • 结束线程

    线程对象属于一次性消耗品,一般线程执行完run方法之后,线程就正常结束了,线程结束之后就报废了,不能再次start...

  • 守护线程和用户线程

    1.用户线程和守护线程的区别用户线程和守护线程都是线程,区别是Java虚拟机在所有用户线程dead后,程序就会结束...

  • Java19守护线程

    在程序后台执行的线程,当程序结束时,守护线程也结束。程序结束:所有的非守护线程结束。

  • 多线程练习

    一个进程结束的前提为进程内所有线程结束。结束子线程-->让子线程中的任务结束(就是让run方法结束:结束循环多用添...

  • Java虚拟机--垃圾收集器和内存分配

    垃圾收集器和内存分配 程序计数器、虚拟机栈、本地方法栈这三个区域和线程的生命周期一致,所以方法结束或者线程结束时,...

  • 终止线程方式

    正常运行结束 程序运行结束,线程自动结束。 使用退出的标志退出线程 一般 run()方法执行完,线程就会正常结束,...

网友评论

      本文标题:junit 主线程结束之后会直接结束虚拟机

      本文链接:https://www.haomeiwen.com/subject/mvllortx.html