gaocc
V2EX  ›  问与答

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

  •  1
     
  •   gaocc · Aug 2, 2018 · 2055 views
    This topic created in 2852 days ago, the information mentioned may be changed or developed.

    如题求问:

    测试类如下: 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 replies    2018-08-02 13:29:42 +08:00
    gaocc
        1
    gaocc  
    OP
       Aug 2, 2018
    多线程小白求问,日志看了下测试类先启动也都是 main 线程
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2911 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 07:37 · PVG 15:37 · LAX 00:37 · JFK 03:37
    ♥ Do have faith in what you're doing.