循环创建10个线程并输出,但线程有时是5个有时是6个,数量好像不是固定的10个

来源:2-5 自定义作用域

慕丝8536024

2019-07-01 16:19

for(int i=0; i<10; i++){
    new Thread(new Runnable() {
        public void run() {
            Bean bean = context.getBean("testBean", Bean.class);
            System.out.println("bean="+bean);
        }
    }).start();
}

输出有时候是5条有时候是6条有时候甚至没有,求解

写回答 关注

4回答

  • 西昆仑
    2019-09-16 11:35:36

    因为Junit单元测试时,如果主线程执行结束则此单元测试也就结束了,这个时候子线程可能还没执行完就被杀死了。所以在你测试过程中输出有时候是5条有时候是6条有时候甚至没有是正常的。那么解决此问题的思路也就有了:

    1. 要么直接粗暴的让主线程执行sleep

    2. 使用CountDownLatch

  • 帝国大学
    2021-05-16 08:16:36

    你没有使用junit的Test类进行测试,请检查

  • 大力全
    2019-07-06 18:57:12

    数量怎么可能不是10呢你for的都是10,你好好试试看

  • c241
    2019-07-03 00:29:10

    Junit单元测试不支持多线程,可以写在main方法,也可以写在测试类里,但是需要让主线程sleep

Spring框架小白的蜕变

Spring Ioc和Spring Bean基础内容的讲解

35278 学习 · 117 问题

查看课程

相似问题