7-12join的问题

来源:7-12 join方法

慕工程9182859

2021-02-25

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

写回答

2回答

悟空

2021-02-25

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

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

0
2
悟空
回复
慕工程9182859
对的,是在等待线程1的执行完毕过程中线程2先执行完毕了,所以先打印出了"线程2执行完毕"
2021-02-25
共2条回复

慕工程9182859

提问者

2021-02-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执行完毕"。而是//img.mukewang.com/szimg/60376b4909f3e18b06070183.jpg


0
0

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

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

2512 学习 · 939 问题

查看课程