V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
gaocc
V2EX  ›  问与答

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

  •  1
     
  •   gaocc · 2018-08-02 13:28:20 +08:00 · 1568 次点击
    这是一个创建于 2316 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题求问:

    测试类如下: 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 启动就正常,这是为什么?

    1 条回复    2018-08-02 13:29:42 +08:00
    gaocc
        1
    gaocc  
    OP
       2018-08-02 13:29:42 +08:00
    多线程小白求问,日志看了下测试类先启动也都是 main 线程
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5785 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 01:41 · PVG 09:41 · LAX 17:41 · JFK 20:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.