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);
    }
相关推荐
我命由我1234522 分钟前
Java 并发编程 - Delay(Delayed 概述、Delayed 实现、Delayed 使用、Delay 缓存实现、Delayed 延迟获取数据实现)
java·开发语言·后端·缓存·java-ee·intellij-idea·intellij idea
北城以北888823 分钟前
SSM--MyBatis框架之缓存
java·缓存·intellij-idea·mybatis
kyle~28 分钟前
算法数学---差分数组(Difference Array)
java·开发语言·算法
曹朋羽34 分钟前
Spring EL 表达式
java·spring·el表达式
沐浴露z1 小时前
详解JDK21新特性【虚拟线程】
java·开发语言·jvm
No0d1es1 小时前
电子学会青少年软件编程(C/C++)1级等级考试真题试卷(2025年9月)
java·c语言·c++·青少年编程·电子学会·真题·一级
9号达人2 小时前
普通公司对账系统的现实困境与解决方案
java·后端·面试
超级苦力怕2 小时前
Java 为何 long a = 999999999 能过;long a = 9999999999 报错?一文讲透“宽化转换”
java
佐杰2 小时前
Jenkins使用指南1
java·运维·jenkins
dllxhcjla2 小时前
三大特性+盒子模型
java·前端·css