以下我关于方法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回答

悟空

2020-02-14

我不太理解你的意思,两种写法好像区别不大,你可以实验一下,我判断不会出现永远处于状态Blocked。

0
3
Ywandung_Lyou
回复
悟空
哦,是我想多了。
2020-02-15
共3条回复

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

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

2512 学习 · 939 问题

查看课程