以下我关于方法join()的等价代码的理解对吗?
来源:7-14 join注意点

Ywandung_Lyou
2020-02-13
在线程thread执行完后,JVM会执行方法notifyAll(),实例thread会被回收,主线程不会获取到该实例的锁而是直接打印“所有子线程执行完毕”。
synchronized (thread) {
thread.wait();
}
System.out.println("所有子线程执行完毕");
假设等价代码这样改写:
synchronized (thread) {
thread.wait();
System.out.println("等价代码执行完毕");
}
System.out.println("所有子线程执行完毕");
由于实例thread执行完毕被回收,主线程再也无法获得实例thread的锁,因此会永远处于状态Blocked。
写回答
1回答
-
我不太理解你的意思,两种写法好像区别不大,你可以实验一下,我判断不会出现永远处于状态Blocked。
032020-02-15
相似问题