采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
为什么有时候控制台先是线程2执行完毕而后再线程1执行完毕。 main函数不应该是走到threadOne.join(),等待线程1执行完毕再往下走吗?
主线程确实是等待线程1执行完毕再往下走,但是主线程并不控制线程1和线程2他们两个的相互顺序。
因为“"线程2执行完毕" ”和"线程1执行完毕" 是在子线程输出的,所以会出现你说的这种情况。
噢,是不是在等待线程1的执行完毕过程中线程2先执行完毕了,所以先打印出了"线程2执行完毕"
对的,是在等待线程1的执行完毕过程中线程2先执行完毕了,所以先打印出了"线程2执行完毕"
如果是main函数是走到threadOne.join(),等待线程1执行完毕再往下走这种情况的话,我让线程1休眠2秒,线程2休眠1秒。又每次都是线程2线打印执行完毕。
那既然这样我在threadOne.join()下加了一行打印"main函数等待线程1执行完毕",程序并没有像预想的那样打印“main函数等待线程1执行完毕”->"线程2执行完毕" -> "线程1执行完毕"。而是
登录后可查看更多问答,登录/注册
完整的并发知识网络+丰富的工作内容分享+50余道并发高频面试题
2.3k 26
1.3k 12
1.4k 12
2.9k 12
1.5k 11
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号