请稍等 ...
×

采纳答案成功!

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

7-12join的问题

图片描述
为什么有时候控制台先是线程2执行完毕而后再线程1执行完毕。
main函数不应该是走到threadOne.join(),等待线程1执行完毕再往下走吗?

正在回答

2回答

主线程确实是等待线程1执行完毕再往下走,但是主线程并不控制线程1和线程2他们两个的相互顺序。

因为“"线程2执行完毕" ”和"线程1执行完毕" 是在子线程输出的,所以会出现你说的这种情况。

0 回复 有任何疑惑可以回复我~
  • 提问者 慕工程9182859 #1
    噢,是不是在等待线程1的执行完毕过程中线程2先执行完毕了,所以先打印出了"线程2执行完毕"
    回复 有任何疑惑可以回复我~ 2021-02-25 17:44:56
  • 悟空 回复 提问者 慕工程9182859 #2
    对的,是在等待线程1的执行完毕过程中线程2先执行完毕了,所以先打印出了"线程2执行完毕"
    回复 有任何疑惑可以回复我~ 2021-02-25 20:45:49
提问者 慕工程9182859 2021-02-25 17:18:25

如果是main函数是走到threadOne.join(),等待线程1执行完毕再往下走这种情况的话,我让线程1休眠2秒,线程2休眠1秒。又每次都是线程2线打印执行完毕。//img1.sycdn.imooc.com/szimg/60376ad909b9b78702670129.jpg

那既然这样我在threadOne.join()下加了一行打印"main函数等待线程1执行完毕",程序并没有像预想的那样打印“main函数等待线程1执行完毕”->"线程2执行完毕" -> "线程1执行完毕"。而是//img1.sycdn.imooc.com//szimg/60376b4909f3e18b06070183.jpg


0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

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

帮助反馈 APP下载

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

公众号

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