4-1线程同步里面关于join()方法

4-1线程同步里面关于join()方法

1
package com.imooc.bank;<br><br>public class Test {<br><br>  public static void main(String[] args) {<br>        // 创建帐户,给定余额为1000<br>       Bank bank=new Bank("1001",1000);<br>        //创建线程对象<br>        SaveAccount sa=new SaveAccount(bank);<br>       DrawAccount da=new DrawAccount(bank);<br>       Thread save=new Thread(sa);<br>     Thread draw=new Thread(da);<br>     save.start();<br>       draw.start();<br>       try {<br>           save.join();<br>            draw.join();<br><br>        } catch (InterruptedException e) {<br>          // TODO Auto-generated catch block<br>          e.printStackTrace();<br>        }<br>       System.out.println(bank);<br>   }<br><br>}<br>

​在代码中有两个线程分别调用了join()方法,按照老师讲的,如果一个线程调用了join()方法,那么其他线程就需要等待调用了join()方法的线程执行完毕之后再执行,那么不应该一个saveAccount()会先执行,drawAccount()后执行吗?

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

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

1回答
好帮手慕小尤 2021-01-29 16:15:13

同学你好,线程的执行顺序是有很大的随机性的,并不是按照代码顺序进行执行的。它是由获取到的CPU时间片、内存等多重因素影响的。

祝学习愉快!

  • 可是当调用了join方法不是会抢占执行的吗?

    2021-04-15 14:29:58
  • 同学你好,join()是会抢占,但线程的执行顺序是有很大的随机性的,它是由获取到的CPU时间片、内存等多重因素影响的。所以就算先执行了join()方法,也不一定会先抢占到CPU时间片。

    祝学习愉快!

    2021-04-15 18:19:37
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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