请稍等 ...
×

采纳答案成功!

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

关于Thread类的join()阻塞当前线程以等待子线程处理完毕问题?

老师,使用Thread类的join()阻塞当前线程以等待子线程处理完毕,您使用了t.join()来阻塞当前线程,但为什么没有去显示唤醒,而是等待子线程处理完毕?(但是您在讲线程状态中,讲道没有设置Timeout参数的Thread.join()方法会进入无限期等待,需要被显示唤醒、如下图红线部分),期待您的解答,谢谢。
图片描述

正在回答 回答被采纳积分+3

1回答

翔仔 2019-06-03 00:26:16

同学好,可能这里说的显式让同学产生误解,昨天我在回答里说了join的源码,其实也是判断被调用的线程的状态,也就是子线程的状态,如果子线程没有执行完毕,那么就会一直调用wait(0)来挂起自己并出让锁,而当子线程执行完成(即run逻辑执行完毕后),此时相当于是显式停止了(因为run函数执行完毕后,相当于是显式将自己的状态置为非alive的了),因此主线程就继续执行了,所以说没有参数的就是显式停止的。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信