为了账号安全,请及时绑定邮箱和手机立即绑定

线程结果显示的问题 从代码顺序上看mrCheng.start();是在System.out.println("")前面的如果不加join方法的话从顺序上来看也应该先执行啊,但结果却不是,这是为什么

http://img1.sycdn.imooc.com//57d7e9eb000133a808620390.jpg从代码顺序上看mrCheng.start();是在System.out.println("")前面的如果不加join方法的话从顺序上来看也应该先执行啊,但结果却不是,这是为什么

正在回答

2 回答

的确是mrCheng.start()先执行,但是如果不加join()方法的话,其他线程不会等待这个线程完成后再运行,而是同时运行的

1 回复 有任何疑惑可以回复我~
#1

qq_为了美好的明天 提问者

怎么会同时运行呢?不太懂,舞台线程和两个军队线程是什么关系啊,军队线程之间不是交互运行的吗?哪有同时运行的啊!(不太明白问题有点模糊不好意思)
2016-09-13 回复 有任何疑惑可以回复我~
#2

簸箕粄 回复 qq_为了美好的明天 提问者

舞台线程是主线程,军队线程是子线程,军队线程的确是交互运行的,因为设置了yeild()方法,但是在mrCheng.start()方法开始时,军队线程已经结束,mrCheng线程也是子线程,如果不加join()方法,舞台主线程在执行完mrCheng.start();语句后就会继续往下执行,会导致System.out.println()先执行的情况
2016-09-13 回复 有任何疑惑可以回复我~
#3

qq_为了美好的明天 提问者

非常感谢!恩恩谢谢谢谢
2016-09-13 回复 有任何疑惑可以回复我~

亲为何我也没有加入join方法,仍然是最后输出比赛结束

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

线程结果显示的问题 从代码顺序上看mrCheng.start();是在System.out.println("")前面的如果不加join方法的话从顺序上来看也应该先执行啊,但结果却不是,这是为什么

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信