notifyAll唤醒后执行的顺序是倒序吗

来源:7-3 notify方法

不吃鱼的喵儿

2019-10-29

 Runnable r = new WaitNofifyAll();
        Thread threadA = new Thread(r);
        Thread threadB = new Thread(r);
        Thread threadC = new Thread(r);
        Thread threadE = new Thread(new Runnable(){
            @Override
            public void run() {
                synchronized (resourceA){
                    resourceA.notifyAll();
                    System.out.println("ThreadC notified.");
                }
            }
        });

        threadA.start();
        threadB.start();
        threadC.start();
        Thread.sleep(200);
        threadE.start();

唤醒后,线程的执行顺序是
Thread-2 is waiting to end
Thread-1 is waiting to end
Thread-0 is waiting to end
我可以理解为notifyAll唤醒后,线程的执行顺序是倒序执行吗
C- B - A。

写回答

1回答

悟空

2019-10-29

不能理解为倒序,这个顺序是不确定的,虽然看上去可能是倒序,但是不同的JVM实现会有不同的唤醒标准。

0
1
不吃鱼的喵儿
非常感谢!
2019-10-29
共1条回复

线程八大核心+Java并发原理及企业级并发解决方案

完整的并发知识网络+丰富的工作内容分享+50余道并发高频面试题

2512 学习 · 939 问题

查看课程