用 org.junit.Test 测试多线程,遇到 Thread.sleep()就停止而不是睡眠的问题?

2018-08-02 13:28:20 +08:00
 gaocc

如题求问:

测试类如下: public class TestThread {

// @Test

// public void test(){

// MyList myList = new MyList();

// new ThreadA(myList).start();

// new ThreadB(myList).start();

// }

public static void main(String[] args) {
    MyList myList = new MyList();
    new ThreadA(myList).start();
    new ThreadB(myList).start();
}

}

带有 sleep()的类如下: public class ThreadA extends Thread {

protected static Logger logger = LoggerFactory.getLogger(ThreadA.class);
private MyList list;

public ThreadA(MyList myList){
    this.list=myList;
}

@Override
public void run() {
    try {
        for (int i = 0; i <10 ; i++) {
            list.add();
            logger.info("添加了"+(i+1)+"个元素");
            Thread.sleep(1000);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

用 @Test 启动测试程序,代码走到 sleep()就回停止,而用 main 启动就正常,这是为什么?

1561 次点击
所在节点    问与答
1 条回复
gaocc
2018-08-02 13:29:42 +08:00
多线程小白求问,日志看了下测试类先启动也都是 main 线程

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/476244

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX