请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

以下我关于方法join()的等价代码的理解对吗?

在线程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。

0 回复 有任何疑惑可以回复我~
  • 提问者 Ywandung_Lyou #1
    请问某个子线程在运行结束后执行的notifyAll是针对所有等待该thread实例的线程吧?
    回复 有任何疑惑可以回复我~ 2020-02-15 13:42:11
  • 悟空 回复 提问者 Ywandung_Lyou #2
    恩对的
    回复 有任何疑惑可以回复我~ 2020-02-15 13:44:50
  • 提问者 Ywandung_Lyou 回复 悟空 #3
    哦,是我想多了。
    回复 有任何疑惑可以回复我~ 2020-02-15 14:07:18
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号