Junit在多线程测试时的坑

Junit单元测试主线程退出,子线程也会退出

java 复制代码
    @Test
    public void test() throws InterruptedException {
        Thread t1 = new Thread(() -> {
            try {
                TimeUnit.SECONDS.sleep(5);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            System.out.println(Thread.currentThread().getName()+":finish");
        }, "t1");
        t1.start(); 
    }

可以看到什么都不会打印,如果给主线程也加上sleep,那就可以了

java 复制代码
    @Test
    public void test() throws InterruptedException {
        Thread t1 = new Thread(() -> {
            try {
                TimeUnit.SECONDS.sleep(5);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            System.out.println(Thread.currentThread().getName()+":finish");
        }, "t1");
        t1.start();
        TimeUnit.SECONDS.sleep(6);
    }
相关推荐
爱吃南瓜的北瓜28 分钟前
Maven之jjwt依赖爆红
java·pycharm·maven
土豆儿@39 分钟前
java之泛型
java·开发语言
橘猫云计算机设计1 小时前
基于SSM的《计算机网络》题库管理系统(源码+lw+部署文档+讲解),源码可白嫖!
java·数据库·spring boot·后端·python·计算机网络·毕设
菜鸟一枚在这1 小时前
深度解析建造者模式:复杂对象构建的优雅之道
java·开发语言·算法
gyeolhada2 小时前
2025蓝桥杯JAVA编程题练习Day5
java·数据结构·算法·蓝桥杯
菜鸟一枚在这2 小时前
深入理解设计模式之代理模式
java·设计模式·代理模式
小天努力学java2 小时前
【面试系列】Java开发--AI常见面试题
java·人工智能·面试
river662 小时前
java开发——为什么要使用动态代理?
java
Zayn~2 小时前
JVM系列--虚拟机类加载机制
java
m0_748248023 小时前
Redis使用手册
java