iyuks 2021-04-13 11:29 采纳率: 84.3%
浏览 21
已结题

这里为什么只打印一个1呢?在junit里测试

public class AlternateTest {

  static   Object o = new Object();
    //交替执行
    @Test
    public void test1() throws InterruptedException {
        new Thread(() -> {
            synchronized (o) {
                while (true){
                    try {
                        o.notify();
                        Thread.sleep(100);
                        System.out.println("1");
                        o.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }

                }
            }
        }).start();
        Thread.sleep(100);
        new Thread(()->{

            synchronized (o){
                try {
                    while (true){
                        o.notify();
                        Thread.sleep(100);
                        System.out.println("2");
                        o.wait();
                    }
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }}
  • 写回答

2条回答 默认 最新

  • 张小帅和刘美美 2021-04-13 12:36
    关注


    当Thread了新的线程后,Junit单元测试 在主线程运行结束后就关闭了,而不会等子线程运行结束。而main函数就不存在这个问题

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月24日
  • 已采纳回答 9月16日