语句不是按顺序执行的吗?为什么会出现两种结果?

语句不是按顺序执行的吗?为什么会出现两种结果?

语句不是按顺序执行的吗?"cut.start();"语句在前,需要先执行,由于cut方法中存在synchronized 关键字,就必须把cut方法执行完才执行后面的“wash.start();”语句,这样的话,结果应该就只是一种,但是答案为什么会出现两种结果?

正在回答

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

1回答

同学你好,1. 线程的执行顺序是随机的,虽然cut.start();"语句在前,但不是一定会先执行cut。

2. synchronized关键字保证共享对象b在同一时刻只能被一个线程访问,所以可以保证cut和wash方法不会在运行还未结束时被打断。但由于线程的执行顺序是随机的,所以两个方法的执行顺序也是随机的,导致出现两种结果。

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

  • 谁叫我这么坏 提问者 #1
    cut.star() 语句,wash.start() 语句都在main方法中,这两个语句创建了两个新的线程,加上main线程,总共3个线程。这三个线程里各自里面的语句按顺序执行,但是到底要执行哪一个线程,要看这个线程有没有CPU资源。。。。。老师,是这样理解吗?
    2020-10-15 17:45:47
  • 同学你好,同学这么理解是可以的,继续加油!祝学习愉快!
    2020-10-15 18:42:42
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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