关于线程的join()方法的问题

关于线程的join()方法的问题

一个线程调用join()方法后,按老师上课时讲的,应该是这个线程执行完了后,其他线程才有可能被执行,那为什么如下代码try {
			
			draw.join();
			save.join();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}执行时并不是先执行取款在执行存款,而且两线程交替执行,join()在此处起什么作用呢?


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,主方法中,语句按顺序执行,在尚未进入draw.join();语句时,save,draw调用start方法,两个线程共同争夺CPU的执行权,此时就会出现两线程交叉执行的状况。同学如果想试验join()方法的作用,可以按照如下顺序执行代码:save.start();save.join();draw.start();draw.join();这时就不会出现交叉执行了。如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

吃吃吃鱼的猫 2019-04-04 14:00:16

同学你好,可以参考下图解释:http://img1.sycdn.imooc.com//climg/5ca59db90001e7a107050432.jpg

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~


  • 提问者 慕沐8221787 #1
    那为什么会出现两线程交叉执行的情况,不是说谁调用join()方法,谁就要不中断地先执行完毕吗?
    2019-04-04 14:19:53
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师