请稍等 ...
×

采纳答案成功!

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

关于同是join的优先级

public static void main(String[] agrs){
thread.join();
thread2.join();
System.out.println(“所有子线程执行完毕”);
}
以上代码,thread和thread2都调用join方法的话是不是不一定thread先执行thread2后执行,而是thread和thread2也要竞争cpu资源,可能thread2先执行之后再执行thread?

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

1回答

悟空 2020-12-23 18:09:31

join是让主线程等thread和thread2,先thread.join();,主线程就先等thread执行完,但是这和thread和thread2的运行顺序无关

0 回复 有任何疑惑可以回复我~
  • 提问者 慕粉1355231097 #1
    main(){
       thread1.start();   1
       thread2.start();   2
       thread1.join();    3
       thread2.join();    4
    }
    按照我的理解第3行是让主线程阻塞直到thread1运行完run(),也就是在thread1运行完run()之前主线程是不调用thread2.join()的,但是运行结果却是thread1和thread2交替执行(都在抢cpu资源),这是为什么呢
    回复 有任何疑惑可以回复我~ 2020-12-24 09:19:38
  • 提问者 慕粉1355231097 #2
    老师我想明白了  3的时候只阻塞主线程 所以并不影响thread1和thread2的运行  到主线程调用4的时候thread1和thread2的run都已执行完毕 并不会对执行结果有所影响
    回复 有任何疑惑可以回复我~ 2020-12-24 09:49:52
  • 悟空 回复 提问者 慕粉1355231097 #3
    是对的
    回复 有任何疑惑可以回复我~ 2020-12-24 10:43:49
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信